使用PowerShell,我希望将计算机名称包含在WMI查询的一些返回数据中。我研究过自定义列 - 需要类似的东西 - 但我不知道如何将计算机名称传递到下一个循环中以包含在结果表中。例如:
Get-WmiObject -Class Win32_LogicalDisk -ComputerName MailServer01
实际上,我又看看$_
是计算机名称:
Get-WmiObject -Class Win32_LogicalDisk -ComputerName $_
这很有效,但我希望将ComputerName
($_)
作为最终输出或报告的一部分。有什么想法吗?
答案 0 :(得分:1)
计算机名已经存在(作为SystemName)。它不是默认显示属性的一部分。
运行
Get-WmiObject -Class Win32_LogicalDisk -ComputerName MailServer01 | format-list *
查看返回对象的所有属性。
答案 1 :(得分:1)
“__Server”属性将始终可用于get-wmiobject对象
另请注意:
“从Windows PowerShell 3.0开始,Get-WmiObject返回的对象的__Server属性具有PSComputerName别名。这使得在输出和报告中包含源计算机名称变得更加容易。”
答案 2 :(得分:0)
试试这个
Get-WMiObject -Class Win32_LogicalDisk -ComputerName $_ | Add-Member -MemberType NoteProperty -Name ComputerName -Value $_ -PassThru
然后您可以输出或操纵您认为合适的数据,只要存在,您就可以通过Add-Member
添加通过{{1}}添加的属性。
cmdlet的文档为here
答案 3 :(得分:0)
$myServers = @("server1", "server2", "server3")
"" > space.txt
$myServers | foreach-object {
write-host "Server: $_"
Get-WmiObject -Class Win32_LogicalDisk -ComputerName $_ | ? { $_.DeviceID -notmatch " [AR]"} | Select -Property __Server, DeviceID, @{Name=’FreeSpaceMB’;Expression={$_.FreeSpace/1MB} } | Format-Table -AutoSize >> c:\space.txt
}