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

Milto007 picture Milto007 · Mar 12, 2014 · Viewed 27.9k times · Source

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

Answer

Trevor Sullivan picture Trevor Sullivan · Mar 12, 2014

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).