我应该是一个简单的脚本,它将连接到域中的所有服务器,并构建一个包含每个服务器上运行的所有服务的表。但是,当我尝试自动化脚本以获取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 }
答案 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
}