WinRM - RPC服务器不可用 - 可以运行telnet和服务

时间:2015-12-16 22:04:14

标签: powershell winrm

问题摘要:

我正在尝试检查域中特定OU中所有服务器上的WMF4。但是,我在大多数服务器上都遇到RPC错误,尽管已经安装了GPO以使WinRM能够正常工作。我正在从域控制器运行以下代码。

我检查或尝试过的事情:

  1. 从DC到端口135和5985上的目标服务器Telnet。工作正常,所以 防火墙应该不是问题。
  2. 检查目标服务器上是否正在运行以下服务:
    • WinRM的
    • 远程注册表
    • 远程过程调用
  3. 将目标服务器上的WinRM可信主机设置为“*”(仅作为测试)
  4. 感兴趣的一个项目 - 有一个服务器我没有收到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"
            }
        }
    }
    

1 个答案:

答案 0 :(得分:0)

当WMI被防火墙阻止或服务未运行时,我通常会在PS中收到RPC错误。 如果我没有误解get-hotfix使用WMI而不是WinRM远程到机器。 启动WMI服务并创建防火墙规则以允许WMI解决RPC错误。