如何在 PowerShell 中管理 Hyper-V 虚拟机
您是否知道可以在 Windows Server 上完全自动化 Hyper-V VM?遵循此深入指南,了解如何使用 Windows PowerShell 释放 Hyper-V 自动化的强大功能。
如何使用 PowerShell 让 Hyper-V 在 Windows Server 上运行
在 Windows Server 上使用 PowerShell 管理和自动化 Hyper-V 之前,必须首先启用 Hyper-V 虚拟化平台。值得庆幸的是,有一种简单、PowerShell 友好的方法可以让 Hyper-V 正常工作。首先,以管理员身份打开 PowerShell 窗口。
PowerShell 窗口打开后,您可以使用以下 Install-WindowsFeature 命令将 Hyper-V 作为 Windows Server 上的一项功能打开。
Install-WindowsFeature -Name Hyper-V -IncludeManagementTools -Restart
运行上述命令后,Hyper-V 将在您的系统上启用。但是,在尝试使用 Hyper-V 之前,您需要重新启动 Windows Server。要重新启动 Windows Server,您可以使用以下 Restart-Computer 命令,或通过 Windows Server UI。
Restart-Computer
当您重新登录 Windows Server 时,您将能够使用 Microsoft 的 Hyper-V 虚拟化平台和 PowerShell 进行管理和自动化。
如何使用PowerShell完成常见的虚拟化任务
您可以直接在 PowerShell 中使用 Hyper-V 执行很多操作。让我们从一些基本的东西开始,比如“Get-VM”命令。此 cmdlet 将列出 Windows Server Hyper-V 上的所有可用 VM。要输入此命令,请以管理员身份启动 PowerShell 窗口。
Get-VM
Get-VM cmdlet 非常基本,因为它仅列出可用的虚拟机。不过,这会派上用场,特别是当您需要了解哪些虚拟机可通过 PowerShell Hyper-V cmdlet 进行管理时。
您可以使用许多有用的 cmdlet 来完成 Windows Server 上的 Hyper-V 任务。 New-VM 命令是这些 cmdlet 之一。要创建新 VM,请使用以下 New-VM 命令。
New-VM -Name "MyNewVM" -MemoryStartupBytes 4GB
您可以在 PowerShell 中使用的另一个有用的 Hyper-V cmdlet 是 Start-VM 命令。此命令将允许您通过 PowerShell 快速启动任何虚拟机。
Start-VM -Name "MyNewVM"
如果您希望关闭使用 Start-VM 启动的虚拟机,还有 Stop-VM 允许您关闭使用 Stop-VM -Name“MyNewVM” cmdlet。
用于完成常见虚拟化任务的更多有用命令
在上一节中,我们介绍了“Get-VM”、“New-VM”、“Start-VM”和“Stop-VM”等基本命令。但是,您可以使用许多更有用的命令来完成 Hyper-V 中的常见虚拟化任务。 New-VHD 就是这样的命令之一。此命令可让您直接从 PowerShell 为 Hyper-V 创建新的虚拟硬盘驱动器。
New-VHD -Path "C:\VMs\MyNewVM.vhdx" -SizeBytes 75GB -Dynamic
创建新的 VHD 是一回事,但如果您想将其附加到现有 VM 该怎么办?使用 Add-VMHardDiskDrive cmdlet 即可实现。但是,请确保您事先知道虚拟机的名称(使用 Get-VM 查找。)
Add-VMHardDiskDrive -VMName "MyNewVM" -Path "C:\VMs\MyNewVM.vhdx"
除了在 PowerShell 中向 Hyper-V VM 添加新的 VHD 之外,您还可以从那里管理网络。例如,如果您需要将虚拟机连接到虚拟交换机(已存在),则可以使用 Connect-VMNetworkAdapter cmdlet。
Connect-VMNetworkAdapter -VMName "MyNewVM" -SwitchName "YourVirtualSwitch"
这不是 PowerShell/Hyper-V 的唯一网络命令。有不少。下面列出了一些有用的命令,您可以利用它们来充分利用 Hyper-V 虚拟机网络。
- Get-VMNetworkAdapter -VMName “VMName” — 此 cmdlet 允许您获取 VM 的虚拟网络适配器信息。
- Set-VMNetworkAdapter -VMName “VMName” — 此 cmdlet 允许您配置网络适配器功能。
- Add-VMNetworkAdapter -VMName “VMName” -SwitchName “VirtualSwitch” — 此 cmdlet 允许您向 VM 添加网络适配器。
- Remove-VMNetworkAdapter -VMName “VMName” -Name “AdapterName” — 如果您希望从 VM 中删除网络适配器,可以使用此 cmdlet 来执行此操作。
- New-VMSwitch -Name “VMName” -NetAdapterName “NetworkAdapterName” — 如果您需要在 VM 上创建新的虚拟交换机,可以使用以下 cmdlet 来执行此操作。
- Get-VMSwitch -Name “VMName” — 如果您需要有关虚拟交换机的信息,此 cmdlet 将为您完成。
-Remove-VMSwitch -Name“VMName” — 需要从 Hyper-V 中的 VM 中删除虚拟交换机吗?使用此 cmdlet 执行此操作。
- Set-VMSwitch -Name “VMName” -NetAdapterName “AdapterName” — 此 cmdlet 允许您设置虚拟交换机的名称。
- Set-VMNetworkAdapterVlan -VMName “VMName” -Access -VlanId 10 — 如果您需要在 Hyper-V VM 中配置 VLAN,可以使用此 cmdlet 来执行此操作。
如何使用 PowerShell 脚本自动执行 Hyper-V 任务
了解 PowerShell 中 Hyper-V 的基本 cmdlet 将使您能够编写一些功能强大的自动化脚本,从而更轻松地管理虚拟机。例如,如果您需要每周二在打补丁后重新启动 3 个虚拟机,您可以编写以下 .PS1 脚本。
注意:在尝试使用此脚本之前,请将“VM1”、“VM2”和“VM3”更改为您希望通过脚本与之交互的虚拟机。
# PowerShell script to reboot VMs
# Define the VM names
$vmNames = @("VM1", "VM2", "VM3")
# Function to reboot VMs
Function Reboot-VMs {
foreach ($vmName in $vmNames) {
Restart-VM -Name $vmName -Force
Write-Host "Rebooted VM: $vmName"
}
}
# Schedule the script to run every Tuesday after patching
# Note: This part is usually done outside the script through Task Scheduler or similar tools
# Call the function to reboot VMs
Reboot-VMs
PowerShell 脚本可以是高级的,也可以是基本的,这实际上取决于您的才能。掌握 PowerShell 脚本允许您自动执行各种 Hyper-V 操作。有关如何学习如何创建 PowerShell 脚本的更多信息,请访问官方 Microsoft PowerShell 脚本文档。




