Get-WmiObject:RPC服务器不可用。 (来自HRESULT的异常:0x80070 6BA

时间:2012-09-27 21:37:11

标签: powershell wmi rpc

我应该是一个简单的脚本,它将连接到域中的所有服务器,并构建一个包含每个服务器上运行的所有服务的表。但是,当我尝试自动化脚本以获取foreach循环中的所有服务器时,我收到RPC错误。如果$ name变量被服务器DNS名称替换,一切都按预期工作。我检查了我的系统(win7)和服务器(2000 - 2008R2)上的防火墙和DCOM服务,这些服务都已正确启用或禁用。所以,我在想脚本中的东西已经破了。我还在学习powershell,所以任何提示都会受到赞赏。

到目前为止这是脚本。      $ servernames = get-adobject -Filter'ObjectClass -eq“Computer”' - Searchbase“OU = Servers,DC = E,DC = BENEFIS,DC = ORG”

 foreach ($name in $servernames) {
        Get-WMIObject win32_service -computername $name -Property      SystemName,Name,StartName,StartMode | 
        Format-table SystemName, Name, Startname >c:\serverservices.txt }

1 个答案:

答案 0 :(得分:1)

您获取的每个对象都有一个name属性,因此您需要将其值传递给ComputerName参数。此外,要使计算机对象使用Get-ADComputer cmdlet,还需要在导出到文件时指定Append开关,否则内容将被覆盖,最终您将看到的是最后一台计算机的输出

$servernames = Get-ADComputer -SearchBase "OU=Servers,DC=E,DC=BENEFIS,DC=ORG" -Filter *

foreach ($name in $servernames) 
{
        Get-WMIObject win32_service -computername $name.Name -Property SystemName,Name,StartName,StartMode |
        Format-table SystemName, Name, Startname | Out-File c:\serverservices.txt -Append
}