在Get-WmiObject数据中包含computername参数

时间:2013-12-20 04:32:10

标签: powershell

使用PowerShell,我希望将计算机名称包含在WMI查询的一些返回数据中。我研究过自定义列 - 需要类似的东西 - 但我不知道如何将计算机名称传递到下一个循环中以包含在结果表中。例如:

Get-WmiObject -Class Win32_LogicalDisk -ComputerName MailServer01

实际上,我又看看$_是计算机名称:

Get-WmiObject -Class Win32_LogicalDisk -ComputerName $_

这很有效,但我希望将ComputerName ($_)作为最终输出或报告的一部分。有什么想法吗?

4 个答案:

答案 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别名。这使得在输出和报告中包含源计算机名称变得更加容易。”

http://technet.microsoft.com/en-us/library/hh849824.aspx

答案 2 :(得分:0)

试试这个

Get-WMiObject -Class Win32_LogicalDisk -ComputerName $_ | Add-Member -MemberType NoteProperty -Name ComputerName -Value $_ -PassThru

然后您可以输出或操纵您认为合适的数据,只要存在,您就可以通过Add-Member添加通过{{1}}添加的属性。

cmdlet的文档为here

答案 3 :(得分:0)

是的,我没有意识到有更多的属性。效果很好:__Server是我需要的属性:

  $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

  }
相关问题