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

问题描述 投票:1回答:2

所以我试图使用我发现的脚本来监控四台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文件。

powershell wmi wmi-query
2个回答
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

0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.