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
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.
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:
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!
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.
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.
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.
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-CSV
Export-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.
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
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.
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.
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.
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.
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
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.
raz na karcie Centrum programisty, przełącz opcję Włącz przechwytywanie 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.
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.
- kliknij przycisk Nagrywaj, aby rozpocząć nagrywanie. Spowoduje to, że czerwony przycisk nagrywania zacznie pulsować.
- 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.
- 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:
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