查询多个电池powershell脚本get-wmiobject win32_battery
问题描述:
所以我试图用我发现的脚本来监控四台UPS并发送关机信号到15台服务器。我对PowerShell相当陌生,并且希望能够查询多个UPS设备。查询多个电池powershell脚本get-wmiobject win32_battery
下面是脚本:(这是很长,我想到了一个引擎收录会更容易些):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>
基本上有五个UPS,当我做
get-wmiobject win32_battery
我看见一个唯一的标识符:
DeviceID : JS0748005250American Power ConversionSmart-UPS 30
00 RM FW:666.6.D USB FW:7.3
所以,我怎么能查询了UPS的所有在说脚本?一旦我找出如何做到这一点,我敢肯定我可以找出关闭信号/ csv文件。
答
你不需要手动迭代电池,而且你已经有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
答
修改该脚本以迭代计算机名称列表。从94行开始插入一个foreach语句,例如foreach ($computer in 'pc1','pc2','pc3','pc4') {
,并在脚本的末尾放置一个关闭}
。这将通过您提供的每台计算机循环脚本。
对不起,我应该澄清。所有四台UPS都插入一台电脑。没有多台电脑可以监控,只需发送关机信号即可。 – user2833447
有点相关,还有: Get-WmiObject -ComputerName Computer1,Computer2,Serve1,Server2'和传统的C风格的foreach循环一样有效和简单。 –
当然,但我正在对现有脚本进行微小更改。当然,如果所有的UPS都连接到一台PC上,那就没有任何意义了。 :-) –