【问题标题】:Get-WMIObject include computer nameGet-WMIObject 包括计算机名称
【发布时间】:2016-02-12 00:26:58
【问题描述】:

我正在尝试一个脚本来远程获取服务器上安装的软件。问题是我希望它输出某些属性,包括计算机名称,但我似乎无法弄清楚如何插入名称。

这是我目前所拥有的......

$servers = Get-QADComputer -SearchRoot "OU=servers,OU=mydomain:-),DC=COM" | Select Name

...当然可以。那么……

$servers | % {Get-WMIObject -Class Win32Reg_AddREmovePrograms} | select Displayname,Version,InstallDate,PSComputerName

... 它提供了安装在该 OU 中所有服务器上的软件的完整列表,但 PSComputerName 变成了 MY COMPUTER(我从中运行查询的计算机 - 不是被查询系统的计算机名)。目标是在软件的每个行项上都安装软件的服务器名称。我问过谷歌教授,但似乎没有看到任何有用的东西(或者我理解的任何东西)。

希望这是有道理的。半业余 PS 脚本编写者,所以希望这对你们来说很容易。提前感谢您的帮助

【问题讨论】:

    标签: powershell computer-name


    【解决方案1】:

    由于从 WMI 调用返回的对象不包含您发出请求的计算机,因此您需要自己从包含您的 ForEach-Object (%) 块中包含它。您可以使用Add-Member 自己添加它,然后像现在一样在外面添加Select-Object

    $servers | % {
        Get-WMIObject -Class Win32Reg_AddREmovePrograms -ComputerName $_ |
        Add-Member -MemberType NoteProperty -Name ComputerName -Value $_ -PassThru
    } | select Displayname,Version,InstallDate,ComputerName
    

    另一种方法是将Select-Object 移动到块内部并在其中执行此操作,方法是使用哈希表动态创建一个新属性:

    $servers | % {
        Get-WMIObject -Class Win32Reg_AddREmovePrograms -computername $_ |
        Select-Object Displayname,Version,InstallDate,@{Name='ComputerName';Expression={$_}}
    }
    

    【讨论】:

      【解决方案2】:

      你的命令:

      Get-WMIObject -Class Win32Reg_AddREmovePrograms
      

      不指定要查询的计算机,所以它只是查询正在执行的计算机命令。因此PSComputerName 显示MY COMPUTER,因为MY COMPUTER 是正在查询的计算机。您必须将-ComputerName 参数指定给Get-WMIObject cmdlet 才能查询特定计算机。而-ComputerName 参数接受计算机名称数组,因此您可以将计算机名称数组放入其中,而不是使用ForEach-Object cmdlet 并一次查询一台计算机。

      【讨论】:

      • 原谅我的新手,但是当你说接受数组时,那会是什么样子?我在命令上查找了 technet,发现“-computername”不接受管道输入,那么如何将数组放入命令中?
      • @CurtChapman 喜欢 $servers='Server1','Server2','Server3';Get-WMIObject -ComputerName $servers.
      • 是的,这似乎给了我想要的输出。但是,我确实需要开发 $servers 变量以包含格式正确的数组,以便我可以查询 AD 以获取列表。为什么我只在 AD 中查询服务器名称时数组无法正常工作?
      • @CurtChapman -ComputerName 参数的值应该是字符串数组。使用您的代码 $servers 是具有 Name 属性的自定义对象数组。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-21
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      相关资源
      最近更新 更多