Hyper-v命令行
Hyper-v使用命令行是为了方便使用脚本管理。。。
查看本地帮助
选择 Windows 开始按钮,然后右键选择,点击 PowerShell。
可以运行以下命令以显示 Hyper-V PowerShell 模块提供的 PowerShell 命令的可搜索列表。
1 | Get-Command -Module hyper-v | Out-GridView |

若要了解有关特定 PowerShell 命令的详细信息,请使用 Get-Help。 例如,运行以下命令将返回有关 Get-VM Hyper-V 命令的信息。
需要加载一会

查看现有的虚拟机
Get-VM使用命令返回虚拟机列表
- PowerShell 中运行以下命令:
1 | Get-VM |

若要查看开机的虚拟机,可以使用命令添加 Where-Object 筛选器。
1 | Get-VM | where {$_.State -eq 'Running'} |
查看关及状态的所有虚拟机
1 | Get-VM | where {$_.State -eq 'Off'} |
启动和关闭虚拟机
若要启动一台虚拟机,请使用虚拟机的名称运行以下命令:
1
Start-VM -Name 虚拟机名字
若要启动当前关闭的所有虚拟机,请获取这些计算机的列表,并将列表通过管道传递给
Start-VM命令:1
Get-VM | where {$_.State -eq 'Off'} | Start-VM
若需要启动以debia 开头的虚拟机:
1
Start-VM -Name debia*
关闭以debia 开头的虚拟机:
1
Stop-VM debia*
强制关机
1
Stop-VM -Name '虚拟机名' –Force
若要关闭所有正在运行的虚拟机,请运行以下命令:
1 | Get-VM | where {$_.State -eq 'Running'} | Stop-VM |
- 保存虚拟机
1 | Save-VM -Name 'debian' |
- 保存以debia*开头的虚拟机
1
Get-VM -Name debia* | Save-VM
创建虚拟机检查点(快照)
若要使用 PowerShell 创建检查点,使用命令选择虚拟机 Get-VM ,并将其传递给 Checkpoint-VM 命令。 最后,使用 -SnapshotName 为检查点命名。 完整的命令如下所示:
创建虚拟机debian的名为Update1的检查点。
1 | Checkpoint-VM -Name 'debian' -SnapshotName Update1 |
查看检查点:
1 | Get-VMSnapshot -VMName 'debian' |
如果要删除名称以“ Update”开头的所有快照,则应运行以下命令:
1 | Get-VM 'debian' | Remove-VMSnapshot -Name Update* |
创建新的虚拟机
以下示例演示如何在 PowerShell 集成脚本环境(ISE)中创建新的虚拟机。 这是一个简单的示例,可以将其扩展为包括其他 PowerShell 功能和更高级的 VM 部署。
若要打开 PowerShell ISE 单击“开始”,请键入 PowerShell ISE。
运行以下代码以创建虚拟机。 有关命令的详细信息,请参阅
New-VM文档。1
2
3
4
5
6
7
8
9
10
11
12
13
14$VMName = "VMNAME"
$VM = @{
Name = $VMName
MemoryStartupBytes = 2147483648
Generation = 2
NewVHDPath = "C:\Virtual Machines\$VMName\$VMName.vhdx"
NewVHDSizeBytes = 53687091200
BootDevice = "VHD"
Path = "C:\Virtual Machines\$VMName"
SwitchName = (Get-VMSwitch).Name
}
New-VM @VM
查看虚拟机状态
首先需要启用资源计量。
1 | Enable-VMResourceMetering -VMName 'debian' |
查看名为debian的虚拟机的CPU使用率,RAM使用率,磁盘容量和网络流量
1 | Measure-VM -VMName 'debian' |
下方的还没有测试
虚拟机配置管理
修改虚拟机配置
1
2
3
4
5
6
7
8# 修改虚拟机内存(动态内存)
Set-VMMemory -VMName "VMName" -DynamicMemoryEnabled $true -MinimumBytes 512MB -MaximumBytes 4GB -StartupBytes 2GB
# 修改虚拟机处理器数量
Set-VMProcessor -VMName "VMName" -Count 4
# 修改虚拟机启动顺序(仅适用于第2代虚拟机)
Set-VMFirmware -VMName "VMName" -BootOrder @("HardDiskDrive", "NetworkAdapter")添加或移除硬件
1
2
3
4
5
6
7
8# 添加虚拟硬盘
Add-VMHardDiskDrive -VMName "VMName" -Path "D:\VHDs\disk2.vhdx"
# 添加网络适配器
Add-VMNetworkAdapter -VMName "VMName" -SwitchName "External Switch"
# 移除硬件(例如移除第2个硬盘)
Remove-VMHardDiskDrive -VMName "VMName" -ControllerLocation 1# 查看所有虚拟交换机 Get-VMSwitch # 创建外部虚拟交换机 New-VMSwitch -Name "External Switch" -NetAdapterName "Ethernet" -AllowManagementOS $true # 创建内部或专用交换机 New-VMSwitch -Name "Internal Switch" -SwitchType Internal # 删除虚拟交换机 Remove-VMSwitch -Name "Internal Switch" -Force# 创建新的动态扩展虚拟硬盘 New-VHD -Path "C:\VHDs\new_disk.vhdx" -SizeBytes 50GB -Dynamic # 挂载虚拟硬盘到主机(便于修改内容) Mount-VHD -Path "C:\VHDs\disk.vhdx" # 卸载虚拟硬盘 Dismount-VHD -Path "C:\VHDs\disk.vhdx" # 压缩虚拟硬盘(回收未使用空间) Optimize-VHD -Path "C:\VHDs\disk.vhdx" -Mode Full1
2
3
4
5
6
------
### 虚拟硬盘管理
1. **创建和管理虚拟硬盘**
1 |
|
查看虚拟机CPU、内存、磁盘、网络实时使用情况(持续刷新)
Get-VM -Name “VMName” | Get-VMResourceMetering | Format-List
启用资源计量(如未启用)
Enable-VMResourceMetering -VMName “VMName”
1
2
3
4
5
2. **导出性能数据**
powershell
导出虚拟机性能数据到CSV
Measure-VM -Name “VMName” | Export-Csv -Path “C:\perf.csv” -NoTypeInformation
1
2
3
4
5
6
7
8
9
------
### 导入和导出虚拟机
1. **导出虚拟机**
powershell
Export-VM -Name “VMName” -Path “D:\Exports"
1
2
3
4
5
2. **导入虚拟机**
powershell
Import-VM -Path “D:\Exports\VMName\Virtual Machines\VMID.xml” -Copy -GenerateNewId
1
2
3
4
5
6
7
8
9
------
### 虚拟机复制(Replication)
1. **配置复制**
powershell
启用虚拟机复制
Enable-VMReplication -VMName “VMName” -ReplicaServerName “ReplicaHost” -ReplicaServerPort 80 -AuthenticationType Kerberos -CompressionEnabled $true
1
2
3
4
5
2. **启动复制**
powershell
Start-VMInitialReplication -VMName “VMName”
1
2
3
4
5
6
7
8
9
------
### 安全检查点(快照)管理
1. **还原到检查点**
powershell
Restore-VMSnapshot -Name “SnapshotName” -VMName “VMName” -Confirm:$false
1
2
3
4
5
2. **重命名检查点**
powershell
Rename-VMSnapshot -VMName “VMName” -Name “OldName” -NewName “NewName”
1
2
3
4
5
6
7
8
9
------
### 其他实用命令
1. **查看Hyper-V主机信息**
powershell
Get-VMHost
1
2
3
4
5
2. **查看虚拟机集成服务状态**
powershell
Get-VMIntegrationService -VMName “VMName”
1
2
3
4
5
3. **启用或禁用集成服务**
powershell
Enable-VMIntegrationService -VMName “VMName” -Name “Time Synchronization”
Disable-VMIntegrationService -VMName “VMName” -Name “Time Synchronization”
参考链接
[微软官网文档](https://learn.microsoft.com/zh-cn/powershell/module/hyper-v/?view=windowsserver2019-ps) 可以左上角根据自己的系统调整