【问题标题】:Get-Process to remote computer doesn't work but Invoke-Command doesGet-Process 到远程计算机不起作用,但 Invoke-Command 可以
【发布时间】:2014-04-16 21:57:09
【问题描述】:

我有 2 台运行 Windows Server 2012 R2 的服务器。其中一个正在托管运行 Windows 7 32 位的虚拟机,我正在尝试使用另一台服务器查看虚拟机当前正在运行的进程。

我必须使用 Enable-PSRemoting -SkipNetworkProfileCheck 才能正常工作。我还必须将这些计算机添加到彼此的 TrustedHosts 列表中。

Get-Process -ComputerName VM01

将返回“无法连接到远程计算机”。不过,

Invoke-Command -ComputerName VM01 -ScriptBlock {Get-Process}

工作得很好。使用 Invoke-Command 和使用带有 ComputerName 参数的 Get-Process 有什么区别?如果很重要,我也可以毫无问题地使用 Enter-PSSession

【问题讨论】:

    标签: powershell powershell-remoting


    【解决方案1】:

    Get-Process 可能使用 DCOM/RPC 远程处理协议,而不是 PowerShell 远程处理(例如Invoke-Command)使用的 Windows 远程管理 (WinRM)。如果您有阻止 DCOM/RPC 的防火墙,那么我可以看到带有 -ComputerName 参数的 Get-Process 将如何失败。使用 PowerShell Remoting(通过 WinRM),您只需打开 TCP 5985 (HTTP) 和 TCP 5986(HTTPS,可选)。

    【讨论】:

    • 您知道我可以在哪里更改相关设置吗?
    • 您想具体更改什么?我认为您不能告诉Get-Process 直接在WinRM 上工作。您需要继续使用位于 PowerShell 远程处理之上的命令(例如,Invoke-Command、PowerShell 工作流活动等)。如果您真的希望 DCOM/RPC 正常工作,则必须确保将防火墙配置为不阻止主机之间的网络流量,或者将 DCOM/RPC 配置为使用静态端口(不推荐 )。
    • 对于它的价值,我发现在提升的 PowerShell 命令提示符下运行以下命令足以启用基于 DCOM/RPC 的 PowerShell 远程处理命令:Set-NetFirewallRule -DisplayGroup "Remote Administration" -启用真
    【解决方案2】:

    我今天遇到了这个错误,我的解决方案(我已经启用了端口 5985)由于我的防火墙阻止了端口 445(在目标上)而出现了问题。

    一旦启用此端口,我就可以使用了,

    Get-Process -ComputerName dc01
    

    Get-Service -ComputerName dc01
    

    不过,我建议您阅读此页面: https://www.grc.com/port_445.htm 因为似乎在允许此端口连接到 Internet 时可能会出现一些安全问题。

    我的症状和 OP 描述的完全一样……

    【讨论】:

      猜你喜欢
      • 2011-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多