获取进程到远程计算机不起作用,但调用命令确实

问题描述:

我有一台运行Windows Server 2012 R2的2台服务器。其中之一是托管运行Windows 7 32位的虚拟机,并且我试图使用其他服务器来查看当前正在运行的虚拟机进程。获取进程到远程计算机不起作用,但调用命令确实

我不得不使用Enable-PSRemoting -SkipNetworkProfileCheck来使任何工作。我还必须将计算机添加到其他TrustedHosts列表中。

Get-Process -ComputerName VM01 

将返回“无法连接到远程机器”。但是,

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

工作得很好。使用Invoke-Command和将Get-Process与ComputerName参数结合使用有什么区别?在情况下,它是很重要的,我也可以用输入-PSSession将没有任何问题

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

+0

您知道我可以在哪里更改相关设置吗? – Milto007

+0

你想要改变什么?我不认为你可以告诉'Get-Process'直接在WinRM上工作。您需要继续使用位于PowerShell Remoting之上的命令(例如'Invoke-Command',PowerShell Workflow活动等)。如果你真的想要DCOM/RPC工作,你必须确保你的防火墙被配置为不阻止主机之间的网络流量,或者配置DCOM/RPC使用静态端口(不推荐使用**)。 –

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

只要该端口启用我能使用,

Get-Process -ComputerName dc01 

Get-Service -ComputerName dc01 

不过,我建议您阅读此页:因为它似乎有些安全 https://www.grc.com/port_445.htm 在允许此端口访问互联网时可能会出现问题。

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