Powershell Get-Process:无法连接到远程机器

Powershell Get-Process:无法连接到远程机器

已经为此挣扎了好几天了。

我收到以下错误:

PS C:\> get-process -ComputerName Win2012r2
get-process : Couldn't connect to remote machine.
At line:1 char:1
+ get-process -ComputerName 10.10.1.54
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Get-Process], InvalidOperationException
    + FullyQualifiedErrorId : System.InvalidOperationException,Microsoft.PowerShell.Commands.GetProcessCommand

我已确认远程注册服务正在服务器上运行(我也尝试重新启动它)。

此外,我还创建了自定义防火墙规则,允许每个端口 5985 && 5986 上的 RCP 连接 https://stackoverflow.com/questions/22357063/get-process-to-remote-computer-doesnt-work-but-invoke-command-does

我还仔细检查了用户名Powershell Get-Process 无法连接到远程计算机

笔记

invoke-command -ComputerName Win2012r2 -ScriptBlock {Get-Process}运行正常,但我真的需要让该get-process -computername过程直接运行,因为它在其他人使用的另一个脚本中失败了

答案1

当我开始在 Win7 客户端测试 LocalHost 上自学 PS2 时,我也遇到了类似的错误。我通过启动远程注册表服务解决了这个问题。

答案2

我最终放弃了,并编写了一个新脚本,使用以下内容而不是Get-Process直接调用:

invoke-command -ComputerName Win2012r2 -ScriptBlock {param($procName) Get-Process -Name $processName} -ArgumentList $ProcName

答案3

-ComputerName使用Get-ProcessRPC,而不是 WinRM。WinRM 使用 5985 和 5986,而不是 RPC。

默认情况下,RPC 端口是动态的。

查看 的“获取帮助” Get-Process

-ComputerNameGet-Process此参数不依赖于 Windows PowerShell 远程处理。即使您的计算机未配置为运行远程命令, 您也可以使用 ComputerName 参数。

Invoke-Command确实使用 WinRM。因此,当您将代码更改为使用 Invoke-Command 时,您的脚本就开始工作了。

答案4

我唯一能想到的就是,要么是你运行此程序的帐户在目标 (Win2012r2) 上没有管理员权限,要么是防火墙阻止了它。尝试完全禁用防火墙以测试后者。

相关内容