HyperV in PowerShell

Mając serwer w wersji Core z zainstalowaną rolą Hyper-V mamy dość ograniczone pole odnośnie zarządzania zwritualizowanym środowiskiem. Oczywiście możemy zakupić profesjonalne narzędzia do zarządzania maszynami wirtualnymi jak np. SCVMM, niemniej są to dodatkowe koszty. Możemy również wykorzystać przystawkę do konsoli MMC „Hyper-V Manager”, tu jednak w przypadku wersji Core pozostaje tylko administracja zdalna.
Alternatywną formą zarządzania środowiskiem Hyper-V jest wykorzystanie modułu Hyper-V dla Powershella. Nie jest to domyślnie wbudowany moduł, lecz można go pobrać ze strony
PowerShell Management Library for Hyper-V

Po rozpakowaniu możemy skorzystać z opcji instalacji przy pomocy skryptu install.cmd. Proces ten jednak podmontuje do powershella dodatkowy katalog z modułami w %ProgramFiles%\modules\HyperV. Z racji, mojej drobnej pedantyczności tzn. lubię ład i porządek, możliwa jest inna forma instalacji. Mianowicie wystarczy przekopiować katalog HyperV_install wraz ze zmianą nazwy na HyperV do domyślnego katalogu z modułami %windir%\System32\WindowsPowerShell\v1.0\Modules\.
Niemniej jednak podczas próby załadowania modułu HyperV wystąpi problem z racji, iż domyślnie polisa wykonywania skryptów zabrania uruchamiania jakichkolwiek skryptów.

Zmieniamy więc ten wpis na:

Set-ExecutionPolicy RemoteSigned

Restricted – Nie uruchamiaj żadnych skryptów.
AllSigned – Uruchamiaj tylko podpisane skrypty, zarówno lokalne jak i z Internetu.
RemoteSigned – Skrypty pobrane z Internetu muszą być podpisane zaufanym certyfikatem wydawcy aby mogły być uruchomione. Natomiast skryptu lokalne nie muszą być podpisywane.
Unrestricted – Uruchamiaj wszystkie – nie zalecam tego podejścia, gdyż mogą się wykonać również skrypty z Internetu zawierające szkodliwy kod.

Akceptujemy zmianę, ponownie uruchamiamy PowerShella i ładujemy moduł HyperV:

Import-Module HyperV

Z tak przygotowanym środowiskiem możemy przystąpić do zarządzania Hyper-V. Ta metoda jest o tyle lepsza od pozostałych, iż pozwala na tworzenie własnych skryptów zarządzających środowiskiem, które będą w pełni dostosowane do naszych potrzeb. Minusem niestety jest przynajmniej odrobina wiedzy z zakresu PowerShella, choć i tutaj można skorzystać Get-Help’a i pogrzebać troszeczkę w dokumentacji.

Poniżej zamieszczam wykaz przydatnych komend opublikowanych zarówno na stronie „produktu” :
Finding a VM
Get-VM, Choose-VM , Get-VMHost

Connecting to a VM
New-VMConnectSession

Discovering and manipulating Machine states
Get-VMState , Set-VMState , Convert-VmState,
Ping-VM , Test-VMHeartBeat, Shutdown-VM , Start-VM, Stop-VM, Suspend-VM
Get-VMKVP, Add-KVP, Remove-KVP, Get-VMJPEG

Backing up, exporting and snapshotting VMs
Export-VM , Import-VM, Get-VMSnapshot, Choose-VMSnapshot , Apply-VMSnapshot , New-VMSnapshot ,Remove-VMSnapshot, Rename-VMSnapShot, Update-VMSnapshot, Get-VMSnapshotTree, Get-VmBackupScript

Adding and removing VMs, configuring motherboard settings.
New-VM , Remove-VM , Set-VM , Get-VMCPUCount, Set-VMCPUCount, Get-VMMemory, Set-VMMemory, Set-VMSerialPort

Manipulating Disk controllers, drives and disk images
Get-VMDiskController
Add-VMSCSIController , Remove-VMSCSIcontroller
Get-VMDriveByController , Add-VMDRIVE , Remove-VMdrive
Get-VMDiskByDrive, Add-VMDISK , Set-VMDisk, Get-VMDisk
Get-VMFloppyDisk , Add-VMFloppyDisk
Add-VMNewHardDisk

Manipluating Network Interface Cards
Get-VMNic , List-VMNic , Choose-VMNIC, Add-VMNIC, Remove-VMNIC , Set-VMNICAddress , Set-VMNICConnection , Get-VMNicport ,
Get-VMnicSwitch, Choose-VMSwitch, New-VMSwitchPort, Get-VMByMACaddress, Choose-VMExternalEthernet,
New-VMExternalSwitch, New-VMInternalSwitch,New-VmPrivateSwitch

Working with VHD files
Get-VHDDefaultPath, Get-VHDInfo, New-VHD, Compact-VHD, Test-VHD,Convert-VHD,Merge-VHD,Mount-VHD, Unmount-VHD

Dla leniwych polecam komendę Show-HypervMenu, czyli w prawie w pełni zautomatyzowane środowisko.

Źródła:
http://pshyperv.codeplex.com/Wikipage
http://www.microsoft.com/poland/technet/article/art0107_01.mspx

Reklamy

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Wyloguj / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Wyloguj / Zmień )

Connecting to %s