Get-Process到远程计算机不起作用,但Invoke-Command可以

时间:2014-03-12 15:58:37

标签: powershell powershell-remoting

我有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和将Get-Process与ComputerName参数一起使用有什么区别?如果它很重要,我也可以毫无问题地使用Enter-PSSession

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:3)

我今天遇到了这个错误,我的情况下的解决方案(我已经启用了端口5985)问题发生了,因为我的防火墙阻塞了端口445(在目标上)。

只要启用此端口,我就可以使用

Get-Process -ComputerName dc01

Get-Service -ComputerName dc01

但我建议您阅读本页: https://www.grc.com/port_445.htm 因为看起来在允许这个端口通往互联网时可能出现一些安全问题。

我的症状与OP描述完全相同......

相关问题