各位 IT Pro 以前是如何通过 Powershell 来远程管理 Hyper-V 中的虚拟服务器呢?想必大家都知道,要远程连接 Powershell 必需为受控制服务器打开 Powershell Remoting 功能。至从有了 PowerShell Direct 功能之后,顾名思义大家就可以在 Hyper-V Host 主机上直接使用 PowerShell 来管理 Guest OS。
PowerShell Direct 功能为我们带来了哪些好处和便利性呢?我想至少有如下两点:
- 可直接在 Hyper-V Host 主机上使用 PowerShell 控制 Guest OS,而无需配置 Powershell Remoting(Enable-PSRemoing -Force)
- Hyper-V Host 主机是直接通过 VMBus 连接到并管理 Guest OS,而无需 Guest OS 配置网络和开启防火墙例外,即便 Guest OS 网络中断仍可正常使用
当然,要使用 PowerShell Direct 功能还是有些限制的:
- 需要 Hyper-V Host 和 Guest OS 都是 Windows 10 或 Windows Server 2016(Windows Server Technical Preview)
- 必需拥有 Guest OS 管理权限(Local Administrator)及凭证
由于 Windows Server 2016 还未正式发布,因此我们现在可以在 Windows 10 中率先使用 PowerShell Direct 功能。大家可在 Windows 10 Hyper-V 主机上使用如下(管理员权限)命令进行使用:
Enter-PSSession -VMName 虚拟机名称 Invoke-Command -VMName 虚拟机名称 -ScriptBlock { 需要执行的命令 }
目前,大多数 IT Pro 都主要使用如下两种工具来管理 Hyper-V Host 中的虚拟机:
- PowerShell 或 Remote Desktop 等远程管理工具
- Hyper-V Virtual Machine Connection (VM Connect)
虽然以上两种方式都可以很好地管理虚拟机,但随着 Hyper-V 主机和 Guest OS 数量的不断增长,VM Connect方式虽然可靠,但很难实现集中统一的自动化管理。虽然 Powershell Remoting 可以实现方便的自动化脚本管理,但在很多时候都配置不便,而且很难满足对安全策略及防火墙限制比较死的企业。
我们再举个例子:比如你使用 Powershell Remoting 功能去更改 Guest OS 的 TCP/IP 配置,一但改错虚拟机就无法连接上了。而此时如果你使用 PowerShell Direct 功能来进行远程管理,由于其直接通过 VMBus 进行管控所以不受网络中断的影响。由此,微软推出 PowerShell Direct 功能的必要性就不言而喻了。