当您使用-computername
with 时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 =
最后两个示例中任一示例开头的变量(确切地说,是第一个示例中的第二行)。
编辑:我只记得 AliasPropertyPSComputerName
是在 v3 中添加的(或在 v2 中被破坏)。因此,如果您使用的是 v2,则需要__SERVER
改用。