Заснемане на видео от виртуални машини Hyper-V с PowerShell

  • PowerShell предоставя изчерпателни командлети за създаване, управление, експортиране и импортиране на Hyper-V виртуални машини с дистанционно управление.
  • Автоматизацията с филтриране и конвейери позволява групови операции и подробни показатели за всяка виртуална машина.
  • Мрежата, съхранението и ресурсите се настройват с New-VMSwitch, Add-VMNetworkAdapter, Set-VMMemory и Set-VMProcessor.
  • Скриптовете за отчитане и решенията за архивиране допълват моментните снимки и експортите, за да защитят вашата среда.

Управление на Hyper-V с PowerShell

Ако работите с виртуализация в Windows, рано или късно ще се наложи да автоматизирате задачи. PowerShell и Hyper-V си пасват идеалноОт стартиране или изключване на виртуални машини до експортирането им, измерване на ресурси или създаване на виртуални мрежи, всичко може да бъде оркестрирано без отваряне на графичната конзола.

В следващите редове ще разгледаме, с примери и добри практики, Как да управлявате Hyper-V старателно с PowerShellЩе научите основни команди, създаване и конфигуриране на виртуални машини, експортиране и импортиране, групово филтриране, показатели, работа в мрежа и съхранение, както и полезни скриптове за отчитане на състоянието на вашата платформа и опции за архивиране, които да ви помогнат да спите спокойно.

Какво е PowerShell и защо да го използваме с Hyper-V?

PowerShell е .NET-базираната рамка за скриптове и автоматизация на Microsoft. Комбинира интерпретатор на команди със скриптов език много мощен, идеален за администриране на Windows, macOS и Linux.

Неговите команди (cmdlets) ви позволяват да свързвате действия във верига и да създавате скриптове за многократна употреба. Microsoft предоставя стотици базови командлети А с Hyper-V модула разполагате с всичко необходимо, за да управлявате хостове, виртуални машини, мрежа и хранилище от конзолата.

Какво е PowerShell

Как да отворите и използвате 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.*'}

Заснемане на видео Hyper-V виртуални машини с PowerShell

Създаване и конфигуриране на виртуални машини с 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 Това е норма: инвентаризация, стартиране/спиране, контролни точки, внос/износ и движения се изпълняват по един и същи начин от вашия административен екип.

CMD и PowerShell: Основни команди за всеки потребител на Windows

Мрежа, съхранение и ресурси: памет и процесор

Създайте комутатори, за да изолирате или свържете виртуални машини към локалната мрежа. 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 ви дава скорост и прецизност; когато комбинирате това с добри политики за архивиране и скриптове за наблюдение, ще имате стабилна платформа, готова за растеж.