来自AD OU的Get-WmiObject

时间:2017-03-27 19:50:57

标签: powershell active-directory wmi

我有一个简单的问题,我似乎无法解决。我需要知道哪些服务器仍在运行server 2008 / R2。

我知道Win32_OperatingSystem的{​​{1}}属性包含我正在寻找的信息。我希望能够针对OU中的一组服务器运行Name

我遇到两个问题:

  1. 我无法弄清楚如何将Get-WmiObject的输出重定向到Get-ADComputer可以使用的内容。我认为Get-WmiObject -ComputerName正在输出Get-ADComputer类型的对象,而Microsoft.ActiveDirectory.Management.ADComputer正在寻找类型Get-WmiObject。这是我想出来的,但似乎不起作用。

    System.Management.ManagementObject
  2. 我的临时解决方法:我能够创建一个包含服务器名称列表的CSV。我能够使用CSV来运行Get-WmiObject Win32_OperatingSystem -ComputerName (Get-ADComputer -filter * -SearchBase "OU=Member Servers,DC=Company,DC=Com" | select @{L="ComputerName";e={$_."name"}}) -Property name, csname | select csname, name | Format-Table -AutoSize 。但是,OU包含“死”服务器。因此,当我尝试使用来自AD的服务器的CSV列表运行Get-WmiObject时,存在连接超时,并且PowerShell会等待一段时间来查看死服务器是否会响应。这确实减慢了操作速度。我们正在努力清理它。在此之前,有没有办法只传递通过Get-WmiObjectTest-Connection的服务器名称?

    Get-WmiObject

1 个答案:

答案 0 :(得分:1)

首先选择名称组件,然后将其传递给下一个管道对象(select -object)

Get-WmiObject Win32_OperatingSystem -ComputerName ((Get-ADComputer -filter * -SearchBase "OU=Member Servers,DC=Company,DC=Com").Name)

注意: -ComputerName :接受一个字符串对象,因此您无法直接将基本类型对象传递给它。