Get-Process to remote computer doesn't work but Invoke-Command does

99封情书 提交于 2019-12-19 04:35:27

问题


I have a 2 servers running Windows Server 2012 R2. One of them is hosting a virtual machine running Windows 7 32-bit, and I am trying to use the other server to view the currently running processes of the virtual machine.

I had to use Enable-PSRemoting -SkipNetworkProfileCheck for anything to work. I also had to add the computers to each others TrustedHosts lists.

Get-Process -ComputerName VM01

will return a "Couldn't connect to remote machine". However,

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

works just fine. What is the difference between using Invoke-Command and using the Get-Process with a ComputerName argument? In case it is important, I can also use Enter-PSSession without any problems


回答1:


Get-Process probably uses the DCOM/RPC remoting protocol instead of Windows Remote Management (WinRM), which is what PowerShell Remoting (eg. Invoke-Command) uses. If you have a firewall blocking DCOM/RPC, then I could see how Get-Process with the -ComputerName parameter would fail. With PowerShell Remoting (via WinRM), all you need to do is open up TCP 5985 (HTTP) and TCP 5986 (HTTPS, optional).




回答2:


I ran across this error my self today, the solution in my case (I already had enabled port 5985) the problem occurred because of my firewall blocked port 445 (on the target).

As soon as this port was enabled I was able to use,

Get-Process -ComputerName dc01

and

Get-Service -ComputerName dc01

However I do recommend you read this page: https://www.grc.com/port_445.htm as it seems that some security issues may appear upon allowing this port toward the Internet.

My symptoms was exactly as OP descripes...



来源:https://stackoverflow.com/questions/22357063/get-process-to-remote-computer-doesnt-work-but-invoke-command-does

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!