Ако работите с виртуализация в Windows, рано или късно ще се наложи да автоматизирате задачи. PowerShell и Hyper-V си пасват идеалноОт стартиране или изключване на виртуални машини до експортирането им, измерване на ресурси или създаване на виртуални мрежи, всичко може да бъде оркестрирано без отваряне на графичната конзола.
В следващите редове ще разгледаме, с примери и добри практики, Как да управлявате Hyper-V старателно с PowerShellЩе научите основни команди, създаване и конфигуриране на виртуални машини, експортиране и импортиране, групово филтриране, показатели, работа в мрежа и съхранение, както и полезни скриптове за отчитане на състоянието на вашата платформа и опции за архивиране, които да ви помогнат да спите спокойно.
Какво е PowerShell и защо да го използваме с Hyper-V?
PowerShell е .NET-базираната рамка за скриптове и автоматизация на Microsoft. Комбинира интерпретатор на команди със скриптов език много мощен, идеален за администриране на Windows, macOS и Linux.
Неговите команди (cmdlets) ви позволяват да свързвате действия във верига и да създавате скриптове за многократна употреба. Microsoft предоставя стотици базови командлети А с Hyper-V модула разполагате с всичко необходимо, за да управлявате хостове, виртуални машини, мрежа и хранилище от конзолата.

Как да отворите и използвате PowerShell на Hyper-V хостове
Ако хостът има графичен потребителски интерфейс, отворете менюто „Старт“, потърсете PowerShell и го изпълнете. „Изпълнение като администратор“При инсталации на Server Core или Hyper-V Server, въведете PowerShell в командния ред, за да стартирате PS сесията.
За отдалечен достъп с Remote Desktop на Server Core, използвайте sconfig (опция 7) и ако трябва да се върнете към конзолата, опция 15 ви връща към cmd.exe. Не забравяйте да активирате RDP на хоста, към който ще се свържете.
Дистанционното администриране без RDP е още по-удобно: инсталирайте инструментите на вашата станция с Инсталиране на WindowsFeature RSAT Hyper-V Tools и добавя -ComputerName към командлети (Get-VM, Start-VM и др.) за работа на целевия хост. Ще управлявате множество хостове без прескачане между отдалечени работни плотове.
Основни командлети на Hyper-V с примери
Когато не можете да си спомните команда или нейния синтаксис, изтеглете я от каталога. get-команда избройте наличните командлети, функции и псевдоними и можете да филтрирате по шаблон:
Get-Command -Module Hyper-V
Get-Command *-VM
Get-Command *-VHD*
За помощ, примери и параметри, Get-Help изяснява синтаксиса и дори показва практически примери:
Get-Help Get-VM
Инвентаризация и жизнен цикъл на виртуални машини
За да видите виртуални машини на локалния или отдалечения хост, Get-VM е първата стъпка:
Get-VM
Get-VM -ComputerName Server1
Стартирайте конкретни виртуални машини или партиди. Можете да използвате заместващи символи в името:
Start-VM -Name 'Windows Server 2016'
Start-VM -Name 'Hyper-V*'
Изключете правилно (или изключете принудително, ако не реагира). Stop-VM поддържа -TurnOff и -Force за екстремни случаи и Save-VM хибернира състоянието:
Stop-VM -Name 'Windows Server 2016'
Stop-VM -Name 'Hyper-V*' -TurnOff
Stop-VM -Name 'Windows Server 2016' -Force
Save-VM -Name 'Windows Server 2016'
Get-VM -Name 'Hyper-V*' | Save-VM
За плавно изключване от гост-ОС, Invoke-VMShutdown Идеално е, когато интеграцията го позволява:
Invoke-VMShutdown -VMName 'testvps' -Force
Контролни точки (снимки)
Контролните точки са злато пред деликатните промени. Checkpoint-VM създава контролната точка y Get-VMSnapshot провери го:
Checkpoint-VM -Name 'Windows Server 2016' -SnapshotName 'Update1'
Get-VMSnapshot -VMName 'Windows Server 2016'
За да почистите снимките по шаблон, направете верига с тръба. Remove-VMSnapshot изтрива всичко, което посочите:
Get-VM 'Hyper-V Server 2012' | Remove-VMSnapshot -Name 'Testing*'
Виртуални дискове (VHD/VHDX)
Проверете пътищата и състоянието на файловете. Test-VHD потвърждава съществуването и валидността на от VHD-то:
Test-VHD -Path 'C:\Testing.vhd'
Когато трябва да създадете или прикачите, комбинирайте Нов VHD y Добавяне на VMHardDiskDrive за автоматизиране на създаването/прикачването. Фиксираният размер е добра практика при товари, чувствителни към производителността:
New-VHD -Path 'D:\hyper-v\virtual hard disks\wstest.vhdx' -SizeBytes 60GB -Fixed
Add-VMHardDiskDrive -VMName 'WSTEST' -Path 'D:\hyper-v\virtual hard disks\wstest.vhdx'
Метрики и мрежа
Активирайте измерване на ресурсите и прегледайте потреблението за всяка виртуална машина. Enable-VMResourceMetering + Measure-VM Те ви дават процесор, RAM, диск и мрежа:
Enable-VMResourceMetering -VMName 'Windows Server 2016'
Measure-VM -VMName 'Windows Server 2016'
За да изброите виртуалните адаптери, включете управление. Get-VMNetworkAdapter обхваща виртуалните машини и самия хост с -All:
Get-VMNetworkAdapter -All
Версия на конфигурацията, процеси и филтриране
След надстройване на хоста, надстройте версията на виртуалната машина, ако е приложимо. Актуализация-VMVersion прави го безопасно:
Update-VMVersion -Name 'TestVM'
За да диагностицирате пречките, разчитайте на командлети на процеси. Get-Process, Stop-Process, Start-Process, Wait-Process y Процес на отстраняване на грешки Те ви дават контрол:
Get-Process -Id 8892
Get-Process WINWORD | Format-List *
Start-Process -FilePath 'notepad.exe'
Start-Process -FilePath 'powershell' -Verb RunAs
Stop-Process -Name 'notepad'
Stop-Process -Id 5052
Where-Object филтрира всяка колекция. Използвайте го с услуги, командлети или процеси за да се запази релевантното:
Get-Service | Where-Object {$_.Status -eq 'Stopped'}
Get-Command | Where-Object {$_.Name -like '*wait*'}
Get-Process | Where-Object {$_.ProcessName -Match '^sys.*'}
Създаване и конфигуриране на виртуални машини с PowerShell
Създаването на виртуална машина от поколение 2 с нов VHDX и присвоена мрежа е въпрос на една команда. New-VM ви позволява да дефинирате памет, диск, път и комутатор в една стъпка:
New-VM -Name 'WSTEST' -MemoryStartupBytes 2GB -Generation 2 \
-NewVHDPath 'D:\hyper-v\virtual hard disks\WSTEST.vhdx' \
-NewVHDSizeBytes 60GB -SwitchName 'ExternalSwitch'
Ако имате нужда от виртуално DVD за зареждане от ISO, моля, добавете контролер и устройство. Не забравяйте да съпоставите номера и местоположението на контролера. към вашия дизайн:
Add-VMSCSIController -VMName 'WSTEST'
Add-VMDvdDrive -VMName 'WSTEST' -ControllerNumber 1 -ControllerLocation 0 -Path 'D:\ISO\my.iso'
Можете също така да подготвите фиксирани дискове и да ги прикрепите. Фиксираните VHDX дискове намаляват фрагментацията и латентността при взискателни входно/изходни операции:
New-VHD -Path 'D:\hyper-v\virtual hard disks\wstest.vhdx' -SizeBytes 60GB -Fixed
Add-VMHardDiskDrive -VMName 'WSTEST' -Path 'D:\hyper-v\virtual hard disks\wstest.vhdx'
За сценарии със съществуващ VHD, укажете -VHDPath и ако използвате отдалечено администриране, добавете -ComputerName. Свойството -BootDevice позволява ви да избирате между VHD, ISO или мрежово зареждане:
New-VM -ComputerName 'Server1' -Name 'VM1' -MemoryStartupBytes 4GB \
-BootDevice VHD -VHDPath '.\VMs\Win10.vhdx' -Path '.\VMData' \
-Generation 2 -SwitchName 'ExternalSwitch'
Пример за splatting в PowerShell ISE, за да бъде изчистен и повторяем. Идеален е за шаблони на сътворението:
$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
Разширена администрация: движения, внос и износ
За да преместите виртуална машина между хостове, Move-VM поддържа трансфер със или без съхранение и работи чудесно, когато източникът е на SMB:
Move-VM -ComputerName 'Server1' -Name 'VM1' -DestinationHost 'Server2'
Move-VM -ComputerName 'Server1' -Name 'VM1' -DestinationHost 'Server2' \
-IncludeStorage -DestinationStoragePath 'D:\VM_name'
Експортирането създава пълно копие (настройки, VHD и моментни снимки). Export-VM се използва за архивиране, тестване или ad-hoc миграции.:
Export-VM -ComputerName 'Server1' -Name 'VM1' -Path 'D:\'
Get-VM | Export-VM -Path 'C:\'
Вносът има три начина: Регистрирайте се на място (същите файлове и ID), възстановявам (копиране в нов идентификатор за запазване на маршрута) и копие (копиране с нов ID). Изберете въз основа на колизията на ID и целта:
# Registrar in situ (elimina antes la VM original con el mismo ID)
Get-VM 'DemoVM' | Remove-VM
Import-VM -Path 'C:\\Virtual Hard Disks\\Exported VMs\\DemoVM\\Virtual Machines\\{GUID}.vmcx'
# Restaurar a nuevas rutas, conservando ID
Import-VM -Path 'C:\\Virtual Hard Disks\\Exported VMs\\Hyper-V Server 2012\\Virtual Machines\\{GUID}.vmcx' \
-Copy -VhdDestinationPath 'C:\\Program Files\\Imported VMs\\VHD Files' \
-VirtualMachinePath 'C:\\Program Files\\Imported VMs\\VM Files'
# Copiar con nuevo ID (importable varias veces en el mismo host)
Import-VM -Path 'C:\\Virtual Hard Disks\\Exported VMs\\DemoVM\\Virtual Machines\\{GUID}.vmcx' \
-Copy -GenerateNewId
Ако работите с Azure Local (Windows Server 2019/2022 и версии като 2311.2 и по-нови), отдалечено администриране с -ComputerName Това е норма: инвентаризация, стартиране/спиране, контролни точки, внос/износ и движения се изпълняват по един и същи начин от вашия административен екип.
Мрежа, съхранение и ресурси: памет и процесор
Създайте комутатори, за да изолирате или свържете виртуални машини към локалната мрежа. New-VMSwitch поддържа режими на честотна лента и QoS:
New-VMSwitch 'QoS Switch' -NetAdapterName 'Wired Ethernet Connection 3' -MinimumBandwidthMode Weight
Добавете виртуални NIC към VM и ги свържете към съответния комутатор. Добавяне на VMNetworkAdapter е вашият съюзник за VM мрежи:
Add-VMNetworkAdapter -ComputerName 'Server1' -VMName 'VM1' -Name 'Redmond NIC1'
Add-VMNetworkAdapter -ComputerName 'Server1' -VMName 'VM1' -SwitchName 'Network'
Динамичната памет оптимизира плътността без загуба на контрол. Set-VMMemory настройте минимум, начало, максимум, приоритет и буфер:
Set-VMMemory -ComputerName 'Server1' -Name 'VM1' -DynamicMemoryEnabled $true \
-MinimumBytes 64MB -StartupBytes 256MB -MaximumBytes 2GB -Priority 80 -Buffer 25
Разпределете vCPU с ограничения и резервации. Set-VMProcessor дефинира брой, резерв, максимум и относително тегло на виртуална машина:
Set-VMProcessor -ComputerName 'Server1' -Name 'VM1' -Count 2 -Reserve 10 -Maximum 75 -RelativeWeight 200
За да генерирате нови дискове, Нов VHD обхваща динамични или фиксирани сценарии във VHD/VHDX. Комбинирайте го с Add-VMHardDiskDrive за да ги прикачите към желаната виртуална машина.
Групови операции и филтриране
Преглеждането на командите на Hyper-V модула в интерактивна мрежа е много удобно. Извън GridView помага ви да проверите наличните параметри:
Get-Command -Module Hyper-V | Out-GridView
За инвентар, филтрирайте по състояние. Къде-Object позволява ви да видите работещите или изключените виртуални машини с един поглед:
Get-VM | Where-Object {$_.State -eq 'Running'}
Get-VM | Where-Object {$_.State -eq 'Off'}
Стартирайте всички изключени виртуални машини или спрете да изпълнявате такива, използващи конвейерна обработка. Идеален е за планирани задачи:
Get-VM | Where-Object {$_.State -eq 'Off'} | Start-VM
Get-VM | Where-Object {$_.State -eq 'Running'} | Stop-VM
Преименуването и почистването също е лесно. Rename-VM и Remove-VM ще ви помогне с преетикетирането и премахването (не забравяйте, че Remove-VM не изтрива VHD):
Rename-VM -ComputerName 'Server1' -Name 'VM1' -NewName 'VM2'
Get-VM -Name 'VM2'
Remove-VM -Name 'VM2'
В клъстер, премахвайте цели групи при докосване. Премахване на ClusterGroup -RemoveResources Почистете виртуалната машина и нейните клъстерни ресурси:
Get-ClusterGroup
Remove-ClusterGroup -RemoveResources -Name 'VM1'
Мониторинг и архивиране: Скриптове и инструменти
За одит на състоянието на Hyper-V с HTML отчети, скриптът на Серхат Акинджи генерира пълен отчет за околната среда и може да бъде изпратен по имейл. Изтеглете го и прегледайте примерен резултат:
Линк за изтегляне · Примерен отчет
Ако използвате Hyper-V Replica, скриптът Sangeeth Следи състоянието на репликация на отделни възли или клъстери и предоставя готов за разпространение HTML отчет:
Изтегляне на имейл за състоянието на репликацията
Що се отнася до защитата на данните, има решения, предназначени за виртуални машини, като например Архивиране и репликация на NAKIVO (VMware, Hyper-V, Nutanix, AWS EC2, Linux, Windows и Microsoft 365) и Архивиране и възстановяване на Winchin (Proxmox, VMware, Hyper-V, XenServer, XCP-ng, oVirt, RHV…). Те предлагат Безагентно копиране, незабавно възстановяване и V2V миграцияи улесняване на централизираните политики и програмиране за минимизиране на рисковете.
Не забравяйте, че Export-VM и Import-VM служат като ad-hoc алтернатива за архивиране, тестване и просто възстановяване, но Те не заместват цялостното архивиране с дедупликация, криптиране и компресия.Експортирането изисква повече ръчна намеса и се мащабира по-трудно в големи среди.
Вече имате практическо ръководство за това как да използвате Hyper-V в конзолата: Откривайте командлети, създавайте и премествайте виртуални машини, измервайте ресурси, настройвайте мрежа и място за съхранение, филтрирайте групово и отчитайте състоянието.Екосистемата PowerShell ви дава скорост и прецизност; когато комбинирате това с добри политики за архивиране и скриптове за наблюдение, ще имате стабилна платформа, готова за растеж.