查询多个电池powershell脚本get-wmiobject win32_battery

时间:2013-10-15 17:58:12

标签: powershell wmi wmi-query

所以我试图使用我发现的脚本来监控四台UPS并向大约15台服务器发送关机信号。我是PowerShell的新手,并希望能够查询多个UPS设备。

以下是剧本:(很长一段时间,我认为将更容易使用pastebin):http://pastebin.com/Uya5Nkwv

我尝试了以下内容,但无济于事。

PS C:\Users\myuser> get-wmiobject win32_battery | select "JS0745012650American P
ower ConversionSmart-UPS 2200 RM FW:665.6.D USB FW:7.3"

JS0745012650American Power ConversionSmart-UPS 2200 RM FW:665.6.D USB FW:7.3
----------------------------------------------------------------------------

PS C:\Users\myuser> get-wmiobject win32_battery | select EstimatedRunTime where
DeviceID like JS07*
Select-Object : A positional parameter cannot be found that accepts argument 'w
here'.
At line:1 char:37
+ get-wmiobject win32_battery | select <<<<  EstimatedRunTime where DeviceID li
ke JS07*
+ CategoryInfo          : InvalidArgument: (:) [Select-Object], ParameterB
indingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell
.Commands.SelectObjectCommand

PS C:\Users\myuser>

基本上有五个UP,当我做的时候

get-wmiobject win32_battery

我可以查看唯一标识符:

DeviceID                    : JS0748005250American Power ConversionSmart-UPS 30
                          00 RM FW:666.6.D USB FW:7.3

那么如何在所述脚本中查询所有 UPS?一旦我弄清楚如何做到这一点,我很确定我能找出关机信号/ csv文件。

2 个答案:

答案 0 :(得分:1)

你不需要手动迭代电池,你已经99%了,真的。

Get-WmiObject win32_battery | Where-Object {$_.DeviceID -match "JS07"} | select estimatedruntime

这应该完全符合您的要求,假设所有DeviceID都包含JS07作为其标识符的一部分。

如果您需要更多信息,例如设备ID或名称:

Get-WmiObject win32_battery | Where-Object {$_.DeviceID -match "JS07"} | select Name, estimatedruntime

答案 1 :(得分:0)

修改该脚本以遍历计算机名称列表。从第94行开始插入foreach语句,例如foreach ($computer in 'pc1','pc2','pc3','pc4') {并在脚本末尾放置一个结束}。这将使脚本循环通过您提供的每台计算机。