我有一个简单的问题,我似乎无法解决。我需要知道哪些服务器仍在运行server 2008 / R2。
我知道Win32_OperatingSystem
的{{1}}属性包含我正在寻找的信息。我希望能够针对OU中的一组服务器运行Name
。
我遇到两个问题:
我无法弄清楚如何将Get-WmiObject
的输出重定向到Get-ADComputer
可以使用的内容。我认为Get-WmiObject -ComputerName
正在输出Get-ADComputer
类型的对象,而Microsoft.ActiveDirectory.Management.ADComputer
正在寻找类型Get-WmiObject
。这是我想出来的,但似乎不起作用。
System.Management.ManagementObject
我的临时解决方法:我能够创建一个包含服务器名称列表的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-WmiObject
到Test-Connection
的服务器名称?
Get-WmiObject
答案 0 :(得分:1)
首先选择名称组件,然后将其传递给下一个管道对象(select -object)
Get-WmiObject Win32_OperatingSystem -ComputerName ((Get-ADComputer -filter * -SearchBase "OU=Member Servers,DC=Company,DC=Com").Name)
注意: -ComputerName :接受一个字符串对象,因此您无法直接将基本类型对象传递给它。