0

一个 Powershell 命令如何在远程机器上运行,而另一个来自同一控制台的却不行?

  1. PS C:> Get-Service -Name WinRM -ComputerName win8

    状态名称 DisplayName
    ------ ---- ------------
    运行 WinRM Windows 远程管理 (WS-Manag...

  2. PS C:> Get-Counter '\Paging File(*)\% Usage' -ComputerName win8 Get-Counter : 无法连接到指定的电脑或电脑离线。在行:1 字符:1

    • Get-Counter '\Paging File(*)\% Usage' -ComputerName win8
    • ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~
    • CategoryInfo : InvalidResult: (:) [Get-Counter],异常
    • FullyQualifiedErrorId : CounterApiError,Microsoft.PowerShell.Commands.GetCount erCommand
4

1 回答 1

1

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

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

于 2013-09-19T07:35:10.237 回答