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

Mil*_*007 2 powershell powershell-remoting

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

我不得不使用Enable-PSRemoting -SkipNetworkProfileCheck来完成任何工作.我还必须将计算机添加到彼此TrustedHosts列表中.

Get-Process -ComputerName VM01
Run Code Online (Sandbox Code Playgroud)

将返回"无法连接到远程计算机".然而,

Invoke-Command -ComputerName VM01 -ScriptBlock {Get-Process}
Run Code Online (Sandbox Code Playgroud)

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

Tre*_*van 6

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