Powershell 远程处理:连接不一致



为什么一个Powershell命令在远程计算机上工作,而另一个命令不能在同一控制台上工作?

  1. PS C:>获取服务 -名称 WinRM -计算机名称 win8

    状态名称显示名称

    ------ ---- -----------运行 WinRM Windows Remote Management (WS-Manag...

  2. PS C:>获取计数器 '\分页文件(*)\% 使用率' - 计算机名 win8获取计数器 :无法连接到指定的计算机或计算机处于脱机状态。行:1 字符:1

    • 获取计数器 '\分页文件(*)\% 使用率' - 计算机名 win8
    • ~~~
    • ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    • 类别信息 : 无效结果: (:)[获取计数器],异常
    • FullQualifiedErrorId : CounterApiError,Microsoft.PowerShell.Command.GetCounter命令

Get-Service 和 Get-Counter对 -ComputerName 使用不同的远程处理层。 Invoke-Command -ComputerName 使用 WinRM 远程处理层,Get-Service(我相信)是一个远程注册表调用。 Get-Counter是一个DCOM调用,我相信通过WMI。

是一个很好的经验法则,如果您不知道包含 -ComputerName 的 cmdlet 正在使用 PowerShell 远程处理层,则可能不是。 许多 cmdlet 在 PowerShell 的 V1 中具有 -ComputerName,并且许多其他远程处理层比 WinRM 更有效,因此许多 -ComputerName 参数使用自己的层。

最新更新