Adam Automator

PowerCLI firmy VMware staje się wszechobecnym interfejsem dla administratorów wirtualizacji hipernadzorców sprzętu obsługiwanego przez ESXi. Nauka zarządzania VMware za pomocą PowerShell i PowerCLI jest silnym dodatkiem do twojego zestawu narzędzi. W tym samouczku PowerCLI dowiesz się, jak to zrobić.

w tym tutorialu dowiesz się:

  • podstawy łączenia się z infrastrukturą VMware za pomocą PowerCLI
  • zapoznaj się z cmdletami do pracy z obiektami VMware
  • wzmocnij swoją wiedzę do eksploracji
  • Zarządzaj VMware dalej za pomocą PowerCLI

przejdźmy do tego!

spis treści

co musisz mieć i wiedzieć

zanim zajdziesz za daleko w tym samouczku PowerCLI, zawsze ważne jest, aby upewnić się, że ty i ja jesteśmy na tej samej stronie. W tym artykule zakładam, że:

  • masz podstawowe doświadczenie w PowerShell. Nie musisz być ekspertem w PowerShell, ale każda znajomość PowerShell, którą posiadasz, będzie Ci dobrze służyć.
  • masz hosta VMware ESXi lub urządzenie vCenter do łączenia się i testowania
  • pracujesz na stacji roboczej z systemem Windows (lub Mac / Linux)
  • masz już zainstalowany PowerCLI i jesteś podłączony. Jeśli nie, sprawdź ten artykuł instalacyjny PowerCLI.

będę używał PowerCLI v 11.4.0. Będę pracować ze stacji roboczej Windows 10 z Windows PowerShell 5.1, ale możesz zamiast tego użyć PowerShell 6, ponieważ w tym samouczku jest parytet funkcji.

Zbierz informacje o hostach ESXi za pomocą PowerCLI

zanim zanurzysz się w wirtualnej warstwie naszego środowiska vSphere, dobrze jest przejrzeć fizyczną warstwę sprzętową. VMware PowerCLI udostępnia cmdlet bezpośrednio do tego celu, aby zebrać szczegółowe informacje o nazwie Get-VMHost.

podczas połączenia z serwerem vCenter lub hostem ESXi uruchom następujący cmdlet.

PS51> Get-VMHost
Get-VMHost
Get-VMHost

ponieważ jestem podłączony do urządzenia serwerowego vCenter, które zarządza dwoma oddzielnymi hostami ESXi, otrzymałem podstawowe informacje o hostach, którymi się zarządzam. Get-VMHost umożliwia przegląd możliwości sprzętowych hostów wirtualizacji. Ale domyślnie Get-VMHost nie zwraca wszystkich informacji, które może.

jeśli podłączyszGet-VMHost cmdlet doFormat-List, otrzymasz wyjście konsoli dla wszystkich informacji o podanych hostach.

Get-Vmhost | Format-List
Get-VMHost | Format-List

alternatywnie możesz być bardziej wybredny i wybierać tylko pojedyncze właściwości obiektu vmhost, z którym pracujesz, jak:

PS51> Get-VMHost | format-list -Property State,LicenseKey,Version

wykorzystanie tego bardziej gadatliwego wyjścia zapewni jeszcze lepszy widok na podstawowy sprzęt, na którym działają zwirtualizowane obciążenia. Niektóre z informacji, w szczególności, to:

  • informacje o walidacji licencji
  • sumy CPU/pamięci
  • Model dostawcy sprzętu
  • nazwa hosta DNS

po przejrzeniu można to skompilować do pliku CSV, być może przy użyciu polecenia Export-CSV.

sprawdzanie maszyn wirtualnych za pomocą PowerCLI

przejdźmy teraz do innego tematu w tym samouczku PowerCLI, przeglądając wirtualne hosty, sprawdzając, które Maszyny wirtualne są obecnie obecne na danym hoście ESXi.

polecenie Get-VM jest przydatnym poleceniem, którego można użyć do przeglądania informacji o maszynach wirtualnych.

PS51> Get-VMHost -Name <Host FQDN> | Get-VM

wyjście tego cmdletu będzie wyglądać mniej więcej tak:

PS51 Get-Vmhost-Name Host FQDN/Get-VM
PS51> Get-Vmhost-Name/Get-VM

powyższe wyjście zapewnia pełną listę aktualnie działających maszyn wirtualnych na danym hoście. Jeśli zdecydujesz się nie określać pojedynczego hosta, jak to zrobiłem powyżej, otrzymasz tabelę informacji dla każdego kolejnego hosta i maszyn wirtualnych na każdym.

Jeśli kiedykolwiek rozwiązujesz problem i potrzebujesz znać liczbę maszyn wirtualnych na danym hoście lub potrzebujesz użyć VMware PowerCLI do zebrania informacji o hoście ESXi, możesz użyć tych poleceń poleceń w przyszłości. Funkcjonalność raportowania, którą masz na wyciągnięcie ręki, zaczyna się rozszerzać!

sprawdzanie wirtualnych przełączników za pomocą PowerCLI

dla tych z nas, którzy zajmują się konfiguracją lub administrowaniem wirtualnymi sieciami klastra vCenter, istnieje pełna gama cmdletów sieciowych dla każdego przypadku użycia. Jeśli chcesz zobaczyć przełączniki wirtualne skonfigurowane w środowisku vSphere, użyjesz następujących opcji:

PS51> Get-VirtualSwitch

w zależności od liczby wirtualnych sieci i wirtualnych przełączników Twoja lista może być dość duża. W moim przypadku, jak widać poniżej, mam pojedynczy DSwitch, który jest rozproszonym przełącznikiem wirtualnym.

w implementacji Enterprise vSphere, w której w klastrze znajduje się wiele hostów ESXi, Przełączniki Dswitch upraszczają wdrażanie wirtualnych przełączników i grup portów na wielu hostach o tej samej konfiguracji. Pozwala to zaoszczędzić na ręcznym tworzeniu identycznych konfiguracji sieci na każdym hoście ręcznie i jest świetnym sposobem na skalowanie klastra!

Get-VirtualSwitch
Get-VirtualSwitch

znajdowanie maszyn wirtualnych podłączonych do sieci wirtualnej za pomocą PowerCLI

próbując zawęzić zakres problemu, możesz się zastanawiać, które Maszyny wirtualne są podłączone do których sieci. Aby to zrozumieć, możesz użyć poleceniaGet-VirtualPortGroup. Dowiedzmy się więcej o tym cmdlecie w tym samouczku PowerCLI.

Grupa portów jest zasadniczo siecią wirtualną. Aby wyświetlić wszystkie grupy portów, Uruchom Get-VirtualPortGroup bez żadnych parametrów. Następnie powinieneś zobaczyć listę wszystkich grup portów wirtualnych obecnych w środowisku vSphere.

Get-VirtualPortGroup
Get-VirtualPortGroup

aby znaleźć wszystkie maszyny wirtualne wewnątrz tej grupy portów (DPortGroup w mój przypadek), możesz uruchomić poniższy skrypt. Pamiętaj, aby zastąpić wartość DPortGroup nazwą Twojej wirtualnej grupy portów.

PS51> Get-VM | Where-Object { ($PSItem | Get-NetworkAdapter | where {$_.networkname -match "DPortgroup"})}

w tym jednym wierszu otrzymujemy listę wszystkich maszyn wirtualnych, które istnieją w tym urządzeniu vCenter, a następnie filtrujemy za pomocą poleceniaWhere-Object, aby uzyskać tylko te maszyny wirtualne o nazwie sieciowej pasującej do naszej grupy portów.

pobieranie maszyn wirtualnych tylko z określoną grupą portów
pobieranie maszyn wirtualnych tylko z określoną grupą portów

dzięki temu wyjściu będziesz w stanie określić, jakie maszyny są podłączone i skonfigurowane dla każdej sieci.

gdy zostaniesz poproszony o zlokalizowanie i przeanalizowanie, które Maszyny wirtualne są podłączone do określonej sieci w VMware, będziesz teraz uprawniony do dostarczenia rozwiązania do raportowania PowerCLI na to pytanie.

uzyskiwanie informacji o wersji systemu operacyjnego na maszynach wirtualnych za pomocą PowerCLI

większość prac administracyjnych wewnątrz VMware odbywa się na poziomie maszyny wirtualnej. Prawdopodobnie otrzymasz niezliczone żądania dotyczące zadań, takich jak pobieranie listy wszystkich rozmiarów dysków twardych na maszynach wirtualnych lub uzyskiwanie wersji systemu operacyjnego dla wszystkich serwerów.

zadania te są uciążliwe w skali. PowerCLI jest w stanie usprawnić je za pomocą kilku ważnych cmdletów, które można dodać do swojego arsenału, więc omówmy je w tym samouczku PowerCLI.

w pewnym momencie możesz zostać zapytany: „ile serwerów Ubuntu mamy w naszym klastrze VMware?”. Być może spędziłeś zbyt dużo czasu klikając w vCenter szukając odpowiedzi. PowerCLI może usprawnić ten proces, patrząc na obiekty VM w vCenter i stosując trochę magii PowerShell na wyjściu.

spójrz na poniższy skrypt, który zbiera informacje o maszynach wirtualnych. Ten fragment używa poleceniaGet-View, do którego przejdziemy nieco później, ale na razie powinieneś wiedzieć, że jest to zaawansowany sposób pobierania właściwości obiektu VMware. W tym przypadku zbieramy zagnieżdżone właściwości, które są najłatwiej pobierane w tej metodzie.

PS51> Get-VM | Sort-Object -Property Name | Get-View -Property @("Name", "Config.GuestFullName", "Guest.GuestFullName") | Select-Object -Property Name, @{N="Configured OS";E={$_.Config.GuestFullName}}, @{N="Running OS";E={$_.Guest.GuestFullName}}

powyższy kod pobiera listę maszyn wirtualnych za pomocą polecenia PowerCLIGet-VM, sortuje listę za pomocą polecenia PowerShellSort-Object, a następnie pobiera niektóre właściwości obiektu za pomocą polecenia PowerCLIGet-View cmdlet.

uruchomienie tego w moim środowisku daje wynik poniżej. Możesz zobaczyć nazwę maszyny Wirtualnej w vCenter ,Configured OS, która jest sposobem, w jaki sprzęt wirtualny VMware jest ustawiony do interpretacji systemu operacyjnego gościa, oraz rzeczywisty Running OS, który reprezentuje rzeczywisty system operacyjny.

znajdowanie maszyn wirtualnych na podstawie różnych kryteriów
znajdowanie maszyn wirtualnych na podstawie różnych kryteriów

z maszynami wirtualnymi replicant i Scriptrunner są wyłączone w klastrze, nie będzie można zobaczyćRunning OS wartość dla nich. System Operacyjny jest gromadzony przez usługę VMware Tools. Jeśli nie jest dostępny, PowerCLI nie może pobrać informacji o systemie operacyjnym.

tworzenie raportów CSV za pomocą PowerCLI

VMware Tools jest usługą gościnną dla maszyn wirtualnych z systemem Windows i Linux, która zapewnia hipernadzorcy dodatkowe informacje i możliwości administracyjne. Najczęściej zapewnia to czyste zamknięcie, informacje o systemie operacyjnym i przeglądanie konsoli maszyn wirtualnych w wyższej rozdzielczości.

wygodnym sposobem raportowania i podawania tych informacji byłoby wrzucenie powyższego skryptu do poleceniaExport-CSVExport-Csv utworzy plik CSV z tymi samymi informacjami, które widzisz w konsoli.

PS51> Get-VM | Sort-Object -Property Name | Get-View -Property @("Name", "Config.GuestFullName", "Guest.GuestFullName") |Select -Property Name, @{N="Configured OS";E={$_.Config.GuestFullName}}, @{N="Running OS";E={$_.Guest.GuestFullName}} | Export-CSV C:\report.csv -NoTypeInformation 

Po uruchomieniu powyższego kodu powinieneś być w stanie otworzyć plik CSV w programie Excel, aby przejrzeć raport.

plik CSV informacji o maszynach wirtualnych
plik CSV informacji o maszynach wirtualnych

sprawdzanie wirtualnych dysków twardych za pomocą PowerCLI

polecenie Get-Harddisk jest kolejnym użytecznym poleceniem. Pole wyboruGet-HardDisk umożliwia sprawdzenie informacji o wirtualnych dyskach twardych podłączonych do maszyn wirtualnych.

na przykład, aby odpytywać informacje o wirtualnym dysku twardym podłączonym do maszyn wirtualnych exchange1, możesz uruchomić następujące operacje:

PS51> Get-VM -Name exchange1 | Get-HardDisk | Format-List
Zapytanie o wirtualny dysk twardy dołączony do exchange1 maszyny wirtualne
Zapytanie o wirtualny dysk twardy dołączony do exchange1 maszyny wirtualne

niektóre z tych informacji mogą być zbędne, takie jak pojemność w Kb vs.GB. Ale istnieje wartość w znajomości StorageFormat (typy alokacji cienkich/grubych). I znając nazwę pliku VMDK.

na przykład ff widzisz wspólny problem i wszystkie dyski twarde maszyn wirtualnych znajdują się na tym samym woluminie magazynu danych, ta wiedza może przyspieszyć rozwiązywanie problemów.

sprawdzanie wirtualnych kart sieciowych za pomocą PowerCLI

oprócz sprawdzania informacji o dysku twardym maszyn wirtualnych, możesz również sprawdzić wirtualne karty sieciowe. Aby sprawdzić te właściwości dla pojedynczej maszyny wirtualnej, możesz użyć poleceniaGet-NetworkAdpter.

PS51> Get-NetworkAdapter -VM myVM

podczas gdy wcześniej polowałeś na wszystkie maszyny wirtualne znajdujące się w tej samej sieci, tym razem chcesz zobaczyć tylko Adaptery podłączone do konkretnej maszyny wirtualnej.

Get-NetworkAdapter
Get-NetworkAdapter

jest to przydatne w przypadku rozwiązywania problemów z maszynami wirtualnymi, które mają wiele kart sieciowych połączone. Możesz szybko i na pierwszy rzut oka określić, czy te adaptery są podłączone do odpowiednich sieci.

uruchamianie skryptów PowerShell w maszynach wirtualnych za pomocą wywołania-VMScript

używającInvoke-VMScript, możesz również uruchomić kod PowerShell bezpośrednio wewnątrz maszyny Wirtualnej; nie jest wymagana łączność sieciowa. Jeśli kiedykolwiek korzystałeś z PowerShell Direct w środowisku Hyper-V, będzie to podobne doświadczenie.

zamiast tworzyć sesję Remotowania PowerShell lub używaćInvoke-Command cmdlet przez sieć,Invoke-VMScript cmdlet może wysyłać polecenia bezpośrednio do maszyny wirtualnej bez normalnej łączności WinRM lub SSH.

jako przykład, być może chciałbyś wykonać prostą listę katalogów na maszynie Wirtualnej o nazwie exchange1. Aby to zrobić, należy przekazać dir C:\ jako wartość dla ScriptText parametr, jak pokazano poniżej.

PS51> Invoke-VMScript -VM exchange1 -ScriptText "dir C:\"

wyniki są tak, jakbyś uruchamiał polecenia z samej konsoli maszyny wirtualnej. Invoke-VMScript następnie przekazuje wszystkie dane wyjściowe, które zwraca polecenie uruchomione na maszynie wirtualnej.

Invoke-VMScript
Invoke-VMScript

chociaż jest to podstawowy przykład, możesz uzyskać tak skomplikowane, jak chcesz. Ten cmdlet PowerCLI pozwala określić typy batch, PowerShell lub Bash w parametrzeScriptText.

Możesz również uzyskać bardziej zaawansowane. Poniżej możesz zobaczyć, jak użyćInvoke-VMScript, aby uruchomić kod PowerShell przy użyciu oddzielnej zmiennej$script dla wejścia parametruScriptText. Pozwala nam to na tworzenie bardziej spersonalizowanych skryptów wejściowych dla maszyny Wirtualnej do przetworzenia.

PS51> $script = 'Get-Disk'$guestCredential = Get-CredentialInvoke-VMScript -ScriptText $script -VM VM -GuestCredential $guestCredential -ScriptType Powershell

wartość parametruScriptText musi mieć ciąg znaków. Dlatego też zmienna$script ma jako konieczność pojedyncze cudzysłowy zewnętrzne.

być może zauważyłeś również użycie parametru GuestCredential. Ten parametr jest używany do uwierzytelniania w systemie operacyjnym maszyny wirtualnej. Ten parametr jest szczególnie przydatny, jeśli chcesz uruchomić skrypt jako inne konto.

Twój skrypt w akcji powinien spowodować wyjście podobne do poniżej.

uruchamianie skryptu na maszynie wirtualnej z wywołaniem-VMScript
uruchamianie skryptu na maszynie wirtualnej z wywołaniem-VMScript

wynik tego skryptu dostarcza nam informacji o dysku maszyny wirtualnej. Na tej podstawie powinieneś wiedzieć, że jest to zdalna maszyna wirtualna, ponieważ VMware Virtual Disk jako przyjazna nazwa dysku.

zaawansowane korzystanie z Get-View

być może niektóre z podstawowych poleceń polecenia zwracają właściwość o nazwieExtensionData. Możesz znaleźć tę właściwość, podłączając wiele poleceń PowerCLI do polecenia PowerShell Get-Member. Jeśli zastanawiałeś się, co to było, teraz masz szansę się dowiedzieć.

następnym krokiem w tym przedsięwzięciu jest zrozumienieGet-View cmdlet. VMware PowerCLI wykorzystuje wiele różnych zapytań do maszyny Wirtualnej, aby zapewnić ładne i proste wyjścieGet-VM. Ale pod maską jest wiele rzeczy, które są dostępne tylko za pomocą polecenia Get-View.

prawdopodobnie zobaczysz wiele skryptów używających tego cmdleta. Powinieneś poświęcić trochę czasu na przyzwyczajenie się do oglądania tego cmdleta w akcji. Aby się zapoznać, użyj poleceniaGet-View, aby uzyskać informacje o maszynie wirtualnej (exchange1 w tym przykładzie).

Możesz zobaczyć Filter opcje tego cmdleta wymagają użycia tabeli hashowej PowerShell, a nie pojedynczych wartości ciągów znaków. Pamiętaj o budowaniu własnych unikalnych skryptów!

PS51> Get-View -ViewType VirtualMachine -Filter @{"Name" = "myVMName"}

wynikiem powyższego polecenia jest wiele zagnieżdżonych informacji konfiguracyjnych i opcji metod do podejmowania działań przeciwko maszynie wirtualnej lub uzyskiwania właściwości obiektu.

Get-View
Get-View

Jeśli użyjesz tego samego skryptu powyżej i wyślesz dane wyjściowe do zmiennej, możesz sprawdzić te zagnieżdżone opcje za pomocą kropki notacja. Tutaj możesz zobaczyć i pobrać wszystkie dodatkowe informacje o systemie operacyjnym gościa, które możesz zgłosić za pośrednictwem PowerCLI.

PS51> $VM = Get-View -ViewType VirtualMachine -Filter @{"Name" = "myVMName"}PS51> $VM.Guest
używanie Get-View z parametrem filtra
używanie Get-View z parametrem filtra

być może chcesz wybrać jedną właściwość. Jeśli tak, możesz wykonać następujące czynności, aby zawęzić indywidualną wartość.

PS51> $VM.Guest.GuestFullName

istnieje wiele opcjiGet-View dla wszystkich typów obiektów VMware. Zachęcamy do zapoznania się z tymi wszystkimi opcjami i zapoznania się z tym pouczającym artykułem VMware, który jest szczegółowo omawiany w tym potężnym cmdlecie!

Przechwytywanie kodu VMware – Ucz się na podstawie kliknięć

Jeśli chcesz skorzystać z PowerCLI, ale nie chcesz budować kodu wpisując, Przechwytywanie kodu w vCenter jest tutaj dla Ciebie. Code Capture to nowe narzędzie programistyczne, które działa podobnie do centrum administracyjnego Active Directory. Omówmy Przechwytywanie kodu w tym samouczku PowerCLI.

To narzędzie rejestruje wszystkie działania, które wykonujesz w GUI. Następnie przekształca wszystkie te działania i zapewnia Skrypty PowerCLI.

domyślnie Przechwytywanie kodu nie jest włączone. Aby go włączyć, otwórz urządzenie vCenter i przejdź do Menu –> Centrum programistyczne, jak pokazano poniżej.

przejście do elementu menu Centrum programisty w vSphere
przejście do elementu menu Centrum programisty w vSphere

raz na karcie Centrum programisty, przełącz opcję Włącz przechwytywanie kodu.

Włączanie przechwytywania kodu
Włączanie przechwytywania kodu

kiedy włączysz Przechwytywanie kodu, zobaczysz czerwony przycisk nagrywania w nagłówku vCenter. Po włączeniu, za każdym razem, gdy chcesz nagrać akcję i przekształcić ją w wyjście PowerCLI, musisz nagrać aktywność GUI, naciskając przycisk nagrywania.

wskaźnik włączonego przechwytywania kodu
wskaźnik włączonego przechwytywania kodu

czerwony przycisk nagrywania pojawi się obok sekcji zalogowanego użytkownika vCenter, dzięki czemu można teraz nagrywać w każdej chwili.

aby zademonstrować Przechwytywanie kodu, przejdź do Kreatora tworzenia nowej maszyny Wirtualnej.

  1. kliknij przycisk Nagrywaj, aby rozpocząć nagrywanie. Spowoduje to, że czerwony przycisk nagrywania zacznie pulsować.
  2. kliknij prawym przyciskiem myszy host VMware i utwórz nową maszynę wirtualną. Uruchom wynikowy Kreator, tworząc nową maszynę wirtualną ze wszystkimi wartościami domyślnymi.
  3. Po utworzeniu maszyny wirtualnej kliknij przycisk nagrywaj i Zatrzymaj nagrywanie.

wynikowy wynik może być nieco bardziej gadatliwy niż oczekiwano. Wyjście zawiera nawet wszystkie czynności przeglądania GUI przed utworzeniem maszyny wirtualnej. Ale powinieneś zobaczyć sekcję oznaczoną w komentarzach zaczynającą się od CreateVM_Task. W tym miejscu kod zaczyna tworzyć maszynę wirtualną.

poniżej znajduje się część wyjścia CreateVM_Task nowego procesu Kreatora maszyny Wirtualnej w GUI za pomocą przechwytywania kodu:

kod wygenerowany przez Centrum programistyczne
kod wygenerowany przez Centrum programistyczne

To wyjście może być trochę przytłaczające, ale udostępnia Ci bezpośrednio liczbę opcji konfiguracyjnych dostępnych dla Twoich maszyn wirtualnych. W zależności od własnych potrzeb możesz teraz wprowadzać poprawki we własnych skryptach i dostosowywać je do własnych potrzeb.

narzędzie do przechwytywania kodu nie ogranicza się tylko do tworzenia maszyn wirtualnych. Może również tworzyć kod dla zmian sieciowych, małych modyfikacji VM lub zmian konfiguracji hosta. Będąc w stanie przejrzeć wyjście PowerCLI z akcji GUI, możesz skorzystać ze skrótu podczas podróży do infrastruktury wdrożonej jako kod.

PowerCLI Tutorial podsumowanie

w tym artykule omówiłeś wiele zagadnień. Dobra robota! Mam nadzieję, że zdałeś sobie sprawę z mocy, jaką PowerCLI wnosi do zarządzania infrastrukturą VMware.

istnieje wiele cmdletów w PowerCLI dla szerokiej gamy baz produktów, ale omówiliśmy tylko kilka. Pamiętaj, aby śledzić ten blog więcej artykułów na temat tego niesamowitego narzędzia!

Czytaj dalej

  • Jak pobrać i zainstalować PowerCLI
  • oficjalne dokumenty VMware PowerCLI

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.