Podstawy tworzenia skryptów PowerCLI dla VMware vSphere

Wcześniej omówiliśmy PowerCLI – czym jest, jak go zainstalować oraz jak zintegrować z Windows PowerShell ISE. Teraz przyjrzyjmy się podstawom tworzenia skryptów, w tym nawiązywaniu połączeń, poleceniom PowerCLI oraz pętlom.

NAKIVO do tworzenia kopii zapasowej VMware vSphere

NAKIVO do tworzenia kopii zapasowej VMware vSphere

Kompleksowa ochrona danych dla maszyn wirtualnych VMware vSphere oraz opcje natychmiastowego odzyskiwania. Bezpieczne lokalizacje kopii zapasowych na miejscu, zdalnie oraz w chmurze. Funkcje ochrony przed oprogramowaniem wymuszającym okup.

Podstawy tworzenia skryptów w PowerCLI

Przyjrzyjmy się kilku podstawowym poleceniom PowerCLI, aby przekonać się, jak łatwo jest zacząć pobierać informacje z naszego środowiska vSphere za pomocą PowerCLI. Należy pamiętać, że poniższy tekst nie ma być w żadnym wypadku wyczerpującym samouczkiem, a raczej wprowadzeniem do PowerCLI oraz wskazówką, jak rozpocząć korzystanie z poleceń i nauczyć się automatyzować swoje środowisko.

Pierwszym poleceniem, które musimy uruchomić, jest to służące do faktycznego połączenia się z naszym środowiskiem vSphere. Można połączyć się bezpośrednio z hostem ESXi lub z vCenter Server.

Aby się połączyć, uruchom następujące polecenie w sesji PowerShell z włączonym PowerCLI:

  • connect-viserver –server 〈yourserver〉

Po uruchomieniu polecenia pojawi się monit o podanie danych logowania. Wpisz swoją nazwę użytkownika i hasło do serwera Serwer ESXi lub vCenter Server.

Basic PowerCLI scripting

Jednym z najbardziej podstawowych poleceń, które możemy uruchomić po połączeniu się z ESXi lub vCenter, jest wyświetlenie wszystkich maszyn wirtualnych w środowisku. Używamy polecenia get-vm, aby wyświetlić informacje o maszynach wirtualnych gości.

  • Get-VM - The get-vm commandlet lists VMs running on the connected host

get-vm commandlet

Aby uzyskać bardziej szczegółowe informacje z polecenia get-vm , możemy wyświetlić pełne informacje za pomocą polecenia:

  • Get-VM | fl – Wyświetla bardziej szczegółowe informacje, takie jak system operacyjny gościa, pule zasobów, wersja sprzętu maszyny wirtualnej, folder, w którym się znajduje, oraz wiele innych szczegółów.

Get VM Full Information

Teraz zwróćmy konkretne przydatne informacje z polecenia Get-VM. Znajdźmy maszyny wirtualne, które są w stanie PoweredOff. Możemy uzyskać informacje z polecenia Get-VM , a następnie przekierować je do where-object , aby wybrać konkretne informacje, które chcemy uzyskać — w tym przypadku PowerState. Jak widać, istnieje mnóstwo możliwości uzyskiwania różnych informacji o maszynach wirtualnych i przekierowywania ich do innego polecenia PowerShell.

  • Get-VM | where-object {$_.PowerState –eq “PoweredOff”}

Get-VM PowerState

Jak widać, wyświetla to tylko maszyny wirtualne, które znajdują się w stanie zasilania „PoweredOff”. Może to być niezwykle przydatne. Możemy nawet przekierować wynik powyższego polecenia do polecenia Start-VM . Zasadniczo możemy więc uzyskać wszystkie wyłączone maszyny wirtualne, a następnie je włączyć.

  • Get-VM | where-object {$_.PowerState –eq “PoweredOff”} | Start-VM

Start-VM commandlet

A co z wyłączaniem konkretnych maszyn wirtualnych? To również możemy zrobić. Możemy wywołać maszynę wirtualną po nazwie, a następnie użyć polecenia Stop-VMGuest , które inicjuje wyłączenie systemu operacyjnego gościa.

  • Get-VM 〈yourvm〉 | Stop-VMguest

Stop-VMguest commandlet

Jeśli nie chcesz otrzymywać potwierdzenia działania, możemy dodać parametr –confirm:false: Stop-VMguest –confirm:false

Załóżmy, że chcemy sprawdzić, ile uruchomionych maszyn wirtualnych ma przypisane więcej niż 1 CPU . Ponownie możemy użyć polecenia where-object , aby wybrać obiekt NumCpu .

  • Get-VM | where-object {$_.NumCpu –gt 1 }

where-object commandlet

Pętle w PowerCLI

Pętle pozwalają na wielokrotne wykonywanie tej samej operacji na wybranych obiektach lub określoną liczbę razy. Na przykład za pomocą pętli foreach możemy wielokrotnie powtarzać określoną czynność. Konfiguruje się ją tak, jak w poniższym pseudokodzie:

foreach ($var in $vars){
Do something…
}

Jeśli chcemy dokładnie określić, na których obiektach wykonamy daną czynność, możemy na przykład pętlować określoną listę maszyn wirtualnych z pliku tekstowego. Aby wypełnić plik tekstowy, możemy uruchomić nasz Get-VM komendlet, wybierając żądane właściwości, a następnie przekierować wynik do pliku tekstowego. Następnie możemy użyć PowerShell do odczytania pliku tekstowego i umieszczenia maszyn wirtualnych w tablicy, na której możemy pętlować i wykonywać czynność. Poniżej dodajemy nową kartę sieciową do maszyn wirtualnych z listy.

Get-vm | where-object {$_.MemoryGB –eq 4 } | select -ExpandProperty Name | out-file c:VMs.txt

$vms = get-content c:VMs.txt

Foreach-object ($vm in $vms) {
new-networkadapter -vm $vms -NetworkName "〈Port group name〉" -Type "VMXNET3" –startconnected
}

Zasoby

W sieci jest mnóstwo świetnych zasobów, w tym osobiste blogi, oficjalna dokumentacja, przykłady kodu itp. Zauważyłem, że jeśli wymyślisz coś, co chcesz zrobić, najprawdopodobniej znajdzie się ktoś, kto już napisał linię kodu PowerCLI, która to zrobi. Zaletą jest również to, że zazwyczaj można znaleźć coś bardzo zbliżonego do tego, co chcesz zrobić, a po opanowaniu podstaw wystarczy niewielka modyfikacja, aby dostosować kod do własnych potrzeb. W ten sposób uczysz się również PowerCLI i jego działania, a także tego, jak modyfikować kod, aby wykonać zadanie, które chcesz zrealizować.

Świetnym miejscem na rozpoczęcie pracy z dokumentacją i innymi zasobami jest oficjalna strona VMware PowerCLI z wydaniami i dokumentacją. Można tam pobrać pliki binarne, a także oficjalny podręcznik użytkownika.

Istnieje również mnóstwo książek zawierających skrypty i przykłady skryptów, które można analizować i modyfikować. Pamiętaj o społeczności administratorów VMware, którzy w większości chętnie dzielą się wiedzą zdobytą od innych osób w trakcie doskonalenia swoich umiejętności w zakresie PowerCLI. Skontaktuj się z członkami swojej społeczności, aby uzyskać pomoc w konkretnych kwestiach lub po prostu poznać ogólne zasady.

Refleksje

PowerCLI jest co najmniej bardzo potężnym narzędziem. W powyższych przykładach pokazaliśmy jedynie wierzchołek góry lodowej. Wszelkie zadania, które wykonujesz wielokrotnie lub które są uciążliwe w kliencie internetowym, świetnie nadają się do zautomatyzowania za pomocą PowerCLI. Właśnie w ten sposób większość użytkowników zaczyna przygodę z PowerCLI – mają zadanie, które muszą wykonać automatycznie, czynność zależną od innych działań w vSphere lub powtarzające się czynności, które idealnie nadają się do zautomatyzowania.

Najlepszym sposobem na naukę PowerCLI jest pobranie go, zainstalowanie i rozpoczęcie korzystania z niego w środowisku laboratoryjnym, takim jak domowe laboratorium. Prawdziwa moc środowiska VMware vSphere ujawnia się dopiero wtedy, gdy dostrzeżesz potencjał wykorzystania automatyzacji do przejęcia kontroli nad vSphere. Zacznij więc tworzyć skrypty za pomocą PowerCLI, a nigdy nie będziesz żałować!

Wypróbuj NAKIVO Backup & Replication

Wypróbuj NAKIVO Backup & Replication

Skorzystaj z bezpłatnej wersji próbnej, aby zapoznać się ze wszystkimi funkcjami rozwiązania w zakresie ochrony danych. 15 dni za darmo. Bez żadnych ograniczeń dotyczących funkcji ani pojemności. Nie trzeba podawać danych karty kredytowej.

People also read