问题摘要:
我正在尝试检查域中特定OU中所有服务器上的WMF4。但是,我在大多数服务器上都遇到RPC错误,尽管已经安装了GPO以使WinRM能够正常工作。我正在从域控制器运行以下代码。
我检查或尝试过的事情:
感兴趣的一个项目 - 有一个服务器我没有收到RPC错误,它是OU中唯一一个与DC在同一/ 24子网中的错误。好像是一种奇怪的巧合。
我错过了什么?
感谢。
以下是我的Powershell代码:
Import-Module ActiveDirectory
$searchOU = "<removed>"
$2008servers=(Get-ADComputer -Filter {OperatingSystemVersion -like "6.0*" -or OperatingSystemVersion -like "6.1*"} -SearchBase $searchOU)
$2012servers=(Get-ADComputer -Filter {OperatingSystemVersion -like "6.2*"} -SearchBase $searchOU)
ForEach ($2008server in $2008servers) {
$server = $2008server.Name
try {
if (Get-HotFix -id KB2819745 -ComputerName $server -ErrorAction Stop) {
Add-Content "WMF4 is present on $server" -Path "C:\Users\`$peterb\Desktop\WMF4-Present.log"
}
}
catch {
if ($Error[0].Exception.Message.Contains("The RPC server is unavailable")) {
$ErrorMessage = $_.Exception.Message
Add-Content "$ErrorMessage on $server" -Path "C:\Users\`$peterb\Desktop\RPCUnavailable.log"
} else {
if ($Error[0].Exception.Message.Contains("Cannot find the requested hotfix")) {
Add-Content "WMF4 is missing on $server" -Path "C:\Users\`$peterb\Desktop\Missing-WMF4.log"
} else {
Add-Content "$ErrorMessage on $server" -Path "C:\Users\`$peterb\Desktop\OtherErrors.log"
}
}
}
}
ForEach ($2012server in $2012servers) {
$server = $2012server.Name
try {
if (Get-HotFix -id KB2799888 -ComputerName $server -ErrorAction Stop) {
Add-Content "WMF4 is present on $server" -Path "C:\Users\`$peterb\Desktop\WMF4-Present.log"
}
}
catch{
if ($Error[0].Exception.Message.Contains("The RPC server is unavailable")) {
$ErrorMessage = $_.Exception.Message
Add-Content "$ErrorMessage on $server" -Path "C:\Users\`$peterb\Desktop\RPCUnavailable.log"
} else {
Add-Content "WMF4 is missing on $server" -Path "C:\Users\`$peterb\Desktop\Missing-WMF4.log"
}
}
}
答案 0 :(得分:0)
当WMI被防火墙阻止或服务未运行时,我通常会在PS中收到RPC错误。 如果我没有误解get-hotfix使用WMI而不是WinRM远程到机器。 启动WMI服务并创建防火墙规则以允许WMI解决RPC错误。