使用 Perl 获取 WMI 内存值

2023-12-12

我需要使用WMI收集Windows操作系统的内存数据。从这个意义上说,我开发了一个 Perl 脚本来生成此类数据。但是,我想知道我的方法是否正确以及有哪些替代方案。收集数据的方法旨在尽可能广泛地应用于 Windows 操作系统。

如果你不是一个坏人,这就是我要检查的内容:

MEM_USED = Win32_OperatingSystem->TotalVisibleMemorySize - Win32_OperatingSystem->FreePhysicalMemory
SWAP_USED = (Win32_OperatingSystem->SizeStoredInPagingFiles - Win32_OperatingSystem->FreeSpaceInPagingFiles) /  Win32_OperatingSystem->SizeStoredInPagingFiles

这是我的脚本:

#!/bin/env perl

use Win32::OLE;

use strict;
use warnings;

my $wmi = Win32::OLE->GetObject("winmgmts://./root/cimv2")
  or die "Failed getobject\n";

my $list, my $v;

$list = $wmi->InstancesOf("Win32_OperatingSystem")
  or die "Failed getobject\n";

my $end_time = time;


my ($total_mem, $free_mem, $used_mem, $mem_percent, $free_percent);

foreach $v (in $list) {

  $total_mem = $v->{TotalVisibleMemorySize};
  $free_mem = $v->{FreePhysicalMemory};
  $used_mem = $total_mem - $free_mem;
  $mem_percent = sprintf("%.2f", $used_mem / $total_mem * 100);
  $free_percent  =  sprintf("%.2f", $free_mem / $total_mem * 100);

  print "Memory used: $mem_percent\%\n";
  print "Memory free: $free_percent\%\n";
  print "Memory total: $total_mem kb\n";
  print "Memory used: $used_mem kb\n";
  print "Memory free: $free_mem kb\n";

  my $total_swap_mem = $v->{SizeStoredInPagingFiles};
  my $free_swap_mem = $v->{FreeSpaceInPagingFiles};
  my $used_swap_mem = $total_swap_mem - $free_swap_mem;
  my $used_swap_mem_perc = ($total_swap_mem - $free_swap_mem) / $total_swap_mem * 100;

  printf "Swap total:%d kb\n", $total_swap_mem;
  printf "Swap free:%d kb\n", $free_swap_mem;
  printf "Swap used:%d kb\n", $used_swap_mem;
  printf "Swap used:%.2f %%\n", $used_swap_mem_perc;
}

Note:在2011年1月19日,我更新了这个脚本,因为当时与发布的评论没有冲突。


我建议你看一下这个 Perl 小项目:

检查 WMI Plus

它没有客户端,可以在 Linux 下运行,也可以在远程 Windows 计算机上运行。我最近一直在使用它来监控内存使用情况。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Perl 获取 WMI 内存值 的相关文章

  • 使用 sed 替换复杂模式

    我想使用 sed 命令替换模式 要删除的图案如下所示 带有一个空格 var 0xaae8 x6A x6F x69 x6E x72 x65 x76 x65 x72 x73 x65 x73 x70 x6C x69 x74 x3E x74 x70
  • 如何使用 Time::Piece strptime 解析微秒?

    我有一个时间戳 看起来像25 OCT 10 04 11 00 000000 AM 我正在尝试将其转换为时间格式 Time Piece gt strptime 25 OCT 10 04 11 00 000000 AM d b y I M S
  • 从 HoA 值中获取独特元素并打印

    我有一个 HoA 其中包含某些值 我只需要 HoA 中的独特元素 预期结果 Key 1 Element ABC DEF Key 2 Element XYZ RST Key 3 Element LMN 下面是我的脚本 usr bin perl
  • 我们应该聘请用 Perl 编写 C 的人吗? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我的一位同事最近面试了一些求职者 其中一位说他们有非常好的 Perl 经验 由于我的同事不懂 Perl 他要求我对那位潜在雇员编写的 场外 一些代码进
  • Log4Perl 将多个程序的日志记录捆绑到一个日志中

    CPAN 上是否有任何 Logger 它允许我将多个程序的日志捆绑到一个文件中 并在两个程序同时运行并并行调用 log4Perl 时同步并行日志记录 背景是我使用一个自定义附加程序来写入电子邮件 我想将所有电子邮件捆绑在一个文件中作为备份
  • 缓存施瓦茨变换

    我正在学习 中级 Perl 它非常酷 我刚刚读完 施瓦茨变换 部分 在理解它之后 我开始想知道为什么变换不使用缓存 在具有多个重复值的列表中 转换会重新计算每个值的值 因此我想为什么不使用哈希来缓存结果 这是一些代码 a place to
  • 如何在 Perl 中运行匿名函数?

    sub print 1 sub print 1 我尝试了各种方法 都是错误的 sub 将为您提供指向该函数的指针 因此您必须通过引用调用 sub print Hello world n gt 另一种简单的方法 如所指出的布拉戈维斯特 布尤克
  • Perl 如何存储/处理非常大的数字?是否应该使用模块来代替 Perl 的默认处理方法?

    我需要添加 50 位数字 因此我将它们作为 字符串 处理 并编写了自己的函数将它们相加 后来 为了它的地狱 我尝试了这个 readFile shift ARGV sub readFile my file shift contains a b
  • 将日期转换为指定格式并比较两个日期

    给定两个日期 Date1 format yyyy mm dd hh mm ss eg 2013 05 21 07 47 21 Date2 format Day Month date hh mm ss yyyy eg Thu Aug 1 09
  • 无法在 Mac 上安装 DBD::mysql

    第一次发帖 格式可能不太对 请见谅 我一直在尝试使用 cpan 在 macOS Catalina 上安装 DBD mysql 但尚未成功 我使用了perlbrew 并尝试了mysql和mariaDB 但仍然没有成功 另外 我在网上研究了不同
  • 如何将 cpanminus 与本地 CPAN::Mini 一起使用?

    我已经创建了自己的 CPAN 本地副本minicpan http search cpan org rjbs CPAN Mini 1 111007 bin minicpan并设法重新配置 cpan 来使用它 太棒了 但是我将如何使用它cpan
  • SFTP文件同时上传和下载

    cronjob 每 3 小时运行一次 使用 SFTP 下载文件 调度程序是用Perl编写的 使用的模块是Net SFTP Foreign Can the Net SFTP Foreign下载仅使用 SFTP 部分上传的文件 如果是这样 我们
  • 以UAC启动时获取当前用户名

    我们的设置有一个嵌入式清单 可以在应用程序启动之前触发 UAC 应用程序以管理员用户身份运行 但是 如果安装程序需要安装 NET Framework 我们必须在重新启动后继续安装 为此 我们必须在当前用户的RunOnce中创建一个注册表项
  • 匹配有限自然数列

    我怎样才能匹配有限自然数 http en wikipedia org wiki Natural number正则表达式系列 所以 要求是 字符串包含数字和空格 作为分隔符 第一个数字是1 每个数字 第一个数字除外 等于前一个数字 1 应该是
  • Perl 中的 Fork 无法在从文件读取的 while 循环内工作

    我正在运行一个 while 循环来读取文件中的每一行 然后使用该行的数据将进程分叉给子进程 N 行之后 我想等待子进程结束并继续接下来的 N 行 等等 它看起来像这样 while w
  • 真实设备中的 Android strace

    我有以下情况 我想监控Android手机上的系统调用 所以 我编写了一个脚本来做到这一点 使用 Android 模拟器可以完美地工作 将应用程序的痕迹写入我的 Ubuntu 上的特定文件中 问题是当我连接一个真实的手机来分析它时 它在结果文
  • c# 简单 WMI 查询中的“无效类”

    我想在此查询后找到一些结果 但在 foreach 循环开始时 出现错误 无效类 string wmiQuery string Format SELECT FROM Win32 Process var searcher new Managem
  • Perl 删除目录中的所有文件

    我怎样才能删除allPerl 中目录中的文件 不删除目录 我的主机只允许最多 250 000 个 文件 而我的 tmp 文件夹会在所有会话 cookie 运行的情况下快速填充 250 000 个 qouta 在这种情况下我无法删除 tmp
  • linux + ksh + 向下舍入或向上舍入 - 浮点数

    在我的 ksh 脚本中 我只需要计算整数 有时我会得到浮点数 例如 3 49 或 4 8 等 所以我需要根据以下规则将浮点数转换为整数 示例 3 49 will be 3 2 9 will be 3 4 1 will be 4 23 51
  • 使用 SIGINT 默认处理程序时从 system() 返回值

    我遇到了一些奇怪的返回值system 当子进程从终端接收到 SIGINT 时 解释一下 从 Perl 脚本parent pl I used system 运行另一个 Perl 脚本作为子进程 但我还需要通过 shell 运行子进程 所以我使

随机推荐

  • 如何在循环中使用 mutate 和 ifelse?

    我所做的是创建虚拟变量来指示连续变量是超过某个阈值 1 还是低于该阈值 0 我通过几次重复的突变实现了这一点 我想用循环代替 load tidyverse library tidyverse create data data lt data
  • 覆盖 XML 序列化方法

    我在尝试自定义 DateTime 变量在我的对象中序列化的方式时遇到问题 我希望它输出为 2011 09 26T13 00 00Z 但是当我重写 GetObjectData 函数 我认为这是执行此操作的方法 时 根本不会为它们输出任何 XM
  • 带有动态选项组的下拉列表

    嗨 cakephp 专家 我正在寻求您对带有动态 optgroup 的动态下拉列表的帮助 假设我有两个表 countries id country name counties id county name country id 现在 我想显
  • Android-NavigationView从右到左

    我正在使用 Android Studio 1 5 的最新版本 我想使用抽屉布局制作一个菜单 用于定位其调用 GravityCompat 我正在尝试使用这个组件并修改它 将抽屉从右向左放置 这是我的代码 public class MainAc
  • iOS 8 中的 NSDateFormatter 日期格式问题

    我有一个 NSDateFormatter 用来将 NSDate 格式化为字符串 以下格式不起作用 ddMMyyyy hhmmss SSS 当我尝试格式化 NSDate 时 我得到以下输出 18092014 08 49 03 638 其中有一
  • Azure 搜索是否处理同义词

    Azure 搜索 可以根据同义词进行搜索吗 例如 如果我搜索 鞋类 系统应该获取以下结果 鞋类的同义词 如鞋子 凉鞋等 我进行了很多搜索 但未能找到有关它的适当文档 我能找到的最接近的是一个帖子说它还不支持 但这是一个旧帖子 https s
  • 从静态方法调用 startActivityForResult

    我有一个按钮监听器 当用户单击按钮时我想启动相机意图 目前我有这个 public class ButtonListener implements View OnClickListener private ArrayList
  • 在整个页面加载之前显示加载栏

    我想在加载整个页面之前显示一个加载栏 目前 我只是使用了一个小的延迟 document ready function page fadeIn 2000 该页面已使用 jQuery 注意 我已经尝试过这个 但它对我不起作用 脚本运行时加载栏
  • Python“for i in”+变量

    我有以下代码 Euler Problem 1 print We are going to solve Project Euler s Problem 1 euler number input What number do you want
  • 如何在Linux上指定时间运行脚本? [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我有一个包含特定日期和时间的文本文件 我希望能够在该文件中指定的时间运行脚本 你将如何实现这一目标 创建另一个在后台运行的脚本 类似于守护程序 并每秒检查当前时间是否与文件中的时间匹
  • 将电子邮件另存为 MSG 文件,无需使用 Outlook(COM 对象等)或第 3 方软件

    现在 我正在使用 Exchange Web 服务 API 和 PowerShell 从 Exchange 中提取特定电子邮件并将其保存为 EML 文件 这很好用 但是 用户 客户要求电子邮件采用 msg 格式 我见过有两种方法可以做到这一点
  • 录制时拍摄相机屏幕截图 - 就像 Galaxy S3 一样?

    我正在开发一个使用 SurfaceView 进行显示的相机应用程序 我可以截取 SurfaceView 的屏幕截图 并将其保存为位图 使用 getDrawingCache 在包装 SurfaceView 的布局上 还有canvas draw
  • VBA:等待 Bloomberg BDP 通话完成

    我有一个脚本将一些外部数据导入到工作表中 这反过来会影响一些 BDP 公式 最好 我想在复制数据后立即对 BDP 结果进行一些检查 Bloomberg Excel 插件异步更新 如何等待结果然后恢复脚本 似乎只有在 VBA 脚本完成后才会导
  • 为 Nitrogen6x 构建 Qt 5 时出现 libm 重定位错误

    我正在尝试在 Qt 5 上构建氮气6x板由 i MX6Q 供电 我已经安装了Debian 喘息在板上 我正在使用乌班图12 10交叉编译机 配置 Qt 就像一个魅力 但我陷入了 make 步骤 这是我运行的配置脚本 configure v
  • 如何设计一封安全且“自毁”的电子邮件?

    正如大多数人所知 电子邮件非常不安全 即使客户端和发送电子邮件的服务器之间有 SSL 安全连接 消息本身在 Internet 上的节点间跳跃时也将采用明文形式 从而容易被窃听 另一个考虑因素是 发件人可能不希望邮件在一段时间后或在被阅读一次
  • 读取 PDF 文档中的所有书签,并使用书签的页码和标题创建字典

    我尝试使用 Python 和 PyPDF2 包来阅读 PDF 文档 目标是读取pdf中的所有书签 并构建一个以书签页码为键 书签标题为值的字典 互联网上没有太多关于如何实现它的支持 除了this文章 其中发布的代码不起作用 我不是 pyth
  • 无法将我自己的域添加到 google api 通知端点

    我正在尝试使用谷歌推送通知 我已经关注了此处列出的注册过程 简而言之 我的领域已在 https 中验证在 Google 网站管理员工具中 但是 当我尝试添加通知端点在 Google Cloud Console 中 我收到以下错误 You d
  • (git tfs fetch)TF400324:Team Foundation 服务不可用,底层连接已关闭

    我使用 git tfs 已经快 5 年了 然后有一天我在运行时遇到以下错误git tfs fetch TF400324 Team Foundation services are not available from server https
  • 如何在低于 KitKat 的 Android 版本的 Android WebView 中重置代理?

    我使用以下 2 种方法在 Android WebView 中为 Android 版本 ICS 和 JB 设置代理 但我无法重置 删除这两个版本的代理 如何重置 删除通过这些方法设置的代理 For ICS private static boo
  • 使用 Perl 获取 WMI 内存值

    我需要使用WMI收集Windows操作系统的内存数据 从这个意义上说 我开发了一个 Perl 脚本来生成此类数据 但是 我想知道我的方法是否正确以及有哪些替代方案 收集数据的方法旨在尽可能广泛地应用于 Windows 操作系统 如果你不是一