PowerShell Direct 与 WinRM 或 PowerShell Remoting 有何不同

How is PowerShell Direct different from WinRM or PowerShell Remoting

PowerShell Direct somehow internally different from PowerShell Remoting吗?或者它只是一些基于 PowerShell Remoting 的额外的特定于 Hyper-V 的 UI?

我使用 PowerShell Direct 来管理我的 Hyper-V 虚拟机。这对于部署自动化来说很方便,因为我不需要启用任何特殊的防火墙规则或调整 VM 的权限——它就可以正常工作。但是,我也可以通过可在非 Hyper-V 机器上使用的 WSMan / WinRM 使用 PowerShell Remoting。另一方面,这需要设置一些先决条件。

注:以下内容是从文档中搜集而来,粗略查看了源代码;这在一定程度上是推测,但我希望它至少在抽象上是正确的——如果您有更多信息,请告诉我们。

  • 功能和 UXPowerShell Direct - used for running PowerShell commands in Hyper-V guests (VMs / Windows containers) from the host machine - is virtually identical to PowerShell Remoting 方面,除了 PowerShell Direct 功能有 名称以-VM开头的不同参数,例如-VMName-ComputerName.

  • 需要不同的参数来至少部分 不同的技术基础:

    • 虽然远程处理基础设施的基本部分——尤其是基于 XML 的序列化——可能是共享的,但 PowerShell Direct 不是 使用 WinRM (WS-MAN) 作为传输,PowerShell Remoting 的方式。

    • 相反,似乎 PowerShell Direct 使用 named pipes 进行主机和来宾计算机之间的通信;请参阅以下源代码链接:

优缺点:

  • PowerShell Direct 具有 而非 的优点,它要求首先通过 Enable-Remoting 设置目标 VM(来宾)进行远程处理 - 请参阅the requirements.

  • 然而,相反地,PowerShell Direct 仅限于来宾(Hyper-V VM 或容器)与其主机之间的本地 通信。

    • 如果您确实需要 运行 从网络上的其他计算机在您的 VM 中执行 PowerShell 命令,则必须设置 PowerShell 远程处理。
  • 据推测,当 运行在 VM 的主机上运行时,PowerShell Direct 的性能优于 PowerShell Remoting,尽管这在实践中可能无关紧要.