使用 PowerShell Direct 管理 Windows 虚拟机

适用于:Windows Server 2022、Windows 10、Windows Server 2016、Windows Server 2019

可以从 Windows 10、Windows Server 2016 或 Windows Server 2019 Hyper-V 主机中使用 PowerShell Direct 远程管理 Windows 10、Windows Server 2016 或 Windows Server 2019 虚拟机。 不管 Hyper-V 主机或虚拟机上的网络配置或远程管理设置如何,PowerShell Direct 都允许在虚拟机中管理 Windows PowerShell。 这使得 Hyper-V 管理员能够更简单地自动化虚拟机管理和配置,并为其编写脚本。

可通过两种方法运行 PowerShell Direct:

  • 使用 PSSession cmdlet 创建和退出 PowerShell Direct 会话

  • 使用 Invoke-Command cmdlet 运行脚本或命令

如果要管理较旧的虚拟机,请使用虚拟机连接 (VMConnect) 或为虚拟机配置虚拟网络

使用 PSSession cmdlet 创建和退出 PowerShell Direct 会话

  1. 在 Hyper-V 主机上,以管理员身份打开 Windows PowerShell。

  2. 使用 Enter-PSSession cmdlet 连接到虚拟机。 通过使用虚拟机名称或 GUID 运行以下命令之一来创建会话:

    Enter-PSSession -VMName <VMName>
    
    Enter-PSSession -VMId <VM GUID>
    
  3. 键入虚拟机的凭据。

  4. 运行所需的任意命令。 这些命令在与其创建了会话的虚拟机上运行。

  5. 完成后,使用 Exit-PSSession 关闭会话。

    Exit-PSSession
    

使用 Invoke-Command cmdlet 运行脚本或命令

你可以使用 Invoke-Command cmdlet 在虚拟机上运行一组预先确定的命令。 下面是如何使用 Invoke-Command cmdlet 的示例,其中 PSTest 是虚拟机名称,而要运行的脚本 (foo.ps1) 位于 C:/ 驱动器上的脚本文件夹中:

Invoke-Command -VMName PSTest  -FilePath C:\script\foo.ps1

若要运行单个命令,请使用 -ScriptBlock 参数:

Invoke-Command -VMName PSTest  -ScriptBlock { cmdlet }

使用 PowerShell Direct 需要什么?

若要在虚拟机上创建 PowerShell Direct 会话,

  • 虚拟机必须在主机上本地运行并已启动。

  • 必须以 Hyper-V 管理员身份登录主机计算机。

  • 必须为虚拟机提供有效用户凭据。

  • 主机操作系统必须至少运行 Windows 10 或 Windows Server 2016。

  • 虚拟机必须至少运行 Windows 10 或 Windows Server 2016。

可使用 Get-VM cmdlet 检查使用中的凭据是否具有 Hyper-V 管理员角色并获取主机上本地运行且已启动的虚拟机的列表。

另请参阅

Enter-PSSessionExit-PSSessionInvoke-Command