当您使用-computername
与get-wmiobject
,你在结果得到额外的领域 - PSComputerName
。您可以选择该字段,以便轻松获取与其他数据相关的名称。
将此与select-object
中的表达式组合在一起,即可得到一张漂亮的表格。但是等等 - 还有更多!
Get-WMIObject
可以采用名称的阵列为-computername
参数,省去了你的循环需要完全。
$listOfComputers = IMPORT-CSV r:\lastReboot.txt
$wmi = Get-WmiObject -Class Win32_OperatingSystem -Computer $listOfComputers.Name;
$wmi |select pscomputername,@{Name="LastBootTime";Expression={$_.converttodatetime($_.lastbootuptime);}};
我们也可以消除$wmi
变量,做这一切在一个管道(断行增加了清晰度)。
$listOfComputers = IMPORT-CSV r:\lastReboot.txt
Get-WmiObject -Class Win32_OperatingSystem -Computer $listOfComputers.Name |`
select-object pscomputername,@{Name="LastBootTime";Expression={$_.converttodatetime($_.lastbootuptime);}};
甚至做全进口,查询&输出单杆:
IMPORT-CSV r:\lastReboot.txt |`
select-object -ExpandProperty name |`
foreach-object{ Get-WmiObject -Class Win32_OperatingSystem -Computer $_} |`
select-object pscomputername,@{Name="LastBootTime";Expression={$_.converttodatetime($_.lastbootuptime);}};
如果需要以后继续使用的数据,你可以将它赋值给一个变量$wmi =
最后两个例子中的任何一个的开始(准确地说,第一个例子中的第二行)。
编辑:我只记得AliasProperty PSComputerName
已添加到v3中(或在v2中被破坏)。因此,如果您使用的是v2,则需要使用__SERVER
。
令人印象深刻。谢谢! @alroc – SMPLGRP