正确使用PowerShell Direct 轻松管理虚拟机

日期: 2016-02-28 作者:Nirmal Sharma翻译:王学强 来源:TechTarget中国 英文

Windows Server 2016 PowerShell Direct特性在执行PowerShell命令的过程当中不需要使用网络连接或者更改现有的安全策略,因此能够解决许多常见的管理问题。 过去,如果管理员想要在Hyper-V虚拟机当中执行PowerShell命令,需要依赖一些远程管理工具——比如Remote Desk Protocol或者Virtual Machine Connect。尽管可以使用PowerShell Remoting特性连接到Hyper-V当中的虚拟机远程执行命令,但是这种方式需要保证源主机和目的主机之间的网络连通性并且启用某些网络端口,还需要执行一系列PowerShe……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

Windows Server 2016 PowerShell Direct特性在执行PowerShell命令的过程当中不需要使用网络连接或者更改现有的安全策略,因此能够解决许多常见的管理问题。

过去,如果管理员想要在Hyper-V虚拟机当中执行PowerShell命令,需要依赖一些远程管理工具——比如Remote Desk Protocol或者Virtual Machine Connect。尽管可以使用PowerShell Remoting特性连接到Hyper-V当中的虚拟机远程执行命令,但是这种方式需要保证源主机和目的主机之间的网络连通性并且启用某些网络端口,还需要执行一系列PowerShell远程命令。

Windows Server 2016 Hyper-V主机能够帮助Hyper-V管理员解决一些常见的虚拟机管理问题。从Windows Server 2016开始,管理员能够以一种更为简单并且可靠的方式来管理运行在Windows Server 2016 Hyper-V主机当中的虚拟机。Windows Server 2016出现之前,在虚拟机当中运行PowerShell命令需要网络连接和更改防火墙配置。但是如果使用Windows Server 2016当中的PowerShell Direct特性,管理员可以在Hyper-V主机操作系统当中执行针对虚拟机的Windows PowerShell命令,并且不需要连接到网络当中或者更改企业的现有安全策略。

使用PowerShell Direct特性需要满足一些前提条件。首先,虚拟机和Hyper-V主机必须运行Windows 10或者Windows Server 2016;其次,还应该确保使用Hyper-V管理员账户登陆到Windows Server 2016 Hyper-V主机当中,所有虚拟机必须运行在“本地”Hyper-V主机当中;最后,在虚拟机当中安装PowerShell。

需要注意的是在Windows Server 2016 Hyper-V主机当中PowerShell Direct特性默认是开启的。Windows Server 2016当中的hypervisor代码已经包含PowerShell Direct特性,同时Hyper-V父分区在VMMS.exe进程下运行PowerShell Direct组件。PowerShell Direct使用VMBUS信道和Hyper-V主机当中的本地虚拟机进行通讯。

PowerShell Direct特性可以通过两种方式执行PowerShell命令,第一种方式需要首先执行如下命令:

Enter-PSSession –VMName <VMName>

这个命令将会创建一个同虚拟机进行交互的PowerShell会话,使用VMName参数指定虚拟机名称。执行完这个命令之后,可以使用Get-Service命令或者任何其他PowerShell命令。当一切完成之后,执行Exit-PSSession命令。

当你在Hyper-V主机当中执行上面一系列命令之后,将会在虚拟机当中执行PowerShell cmdlet (Get-Service),在Hyper-V主机的PowerShell窗口当中输出执行结果。第二种方式则使用Invoke-Command cmdlet针对某台虚拟机运行PowerShell命令或者脚本,同样使用VMName参数指定虚拟名称。下面举例如何使用Invoke-Command cmdlet:

Invoke-Command –VMName TestVM –FilePath C:VMScriptsScript1.PS1

Invoke-Command –VMName TestVM –ScriptBlock { Get-Process }

现在,运行在远程Hyper-V主机当中的虚拟机还不支持PowerShell Direct特性,虚拟机必须在本地运行。还需要注意的是PowerShell Direct特性只支持运行Windows 10或者之后版本操作系统的虚拟机。

作者

Nirmal Sharma
Nirmal Sharma

TechTarget投稿作者

翻译

王学强
王学强

TechTarget特邀编辑,毕业于计算机专业,现任职于外企IT分析师,负责网络、防火墙和服务器等系统运维工作,对虚拟化、网络安全和渗透测试拥有浓厚兴趣,工作外热爱旅行、汽车和健身。

相关推荐