Adam Automator

PowerCLI de VMWare devine interfața omniprezentă pentru administratorii de virtualizare hipervizor ai hardware-ului acceptat ESXi. Învățarea modului de gestionare a VMware prin PowerShell și PowerCLI este un plus puternic pentru setul de instrumente. În acest tutorial PowerCLI, veți învăța cum să faceți exact asta.

în acest tutorial, veți învăța:

  • elementele de bază ale conectării la infrastructura VMware cu PowerCLI
  • familiarizați-vă cu cmdleturile pentru lucrul cu obiectele VMware
  • împuterniciți-vă cu cunoștințele pentru a explora
  • gestionați VMware mai departe prin PowerCLI

să ajungem la asta!

cuprins

ce trebuie să aveți și să știți

înainte de a ajunge prea departe în acest tutorial PowerCLI, este întotdeauna important să vă asigurați că amândoi suntem pe aceeași pagină. Pentru acest articol, voi presupune că:

  • aveți experiență de bază PowerShell. Nu trebuie să fii expert PowerShell, prin orice mijloace, dar orice familiaritate PowerShell pe care o ai te va servi bine.
  • aveți o gazdă Vmware ESXi sau un aparat vCenter pentru conectarea și testarea
  • lucrați la o stație de lucru Windows (sau Mac/Linux)
  • aveți PowerCLI deja instalat și sunteți conectat. Dacă nu, consultați acest articol de instalare PowerCLI.

voi folosi PowerCLI v 11.4.0. Voi lucra de la o stație de lucru Windows 10 cu Windows PowerShell 5.1, dar sunteți binevenit să utilizați PowerShell 6 în schimb, deoarece există paritate caracteristică pentru acest tutorial.

adunați informații despre gazdele ESXi cu PowerCLI

înainte de a vă scufunda în stratul virtual al mediului nostru vSphere, este o idee bună să revizuiți stratul hardware fizic. VMware PowerCLI oferă un cmdlet direct în acest scop, pentru a aduna informații detaliate numite Get-VMHost.în timp ce sunteți conectat la serverul vCenter sau la gazda ESXi, executați următorul cmdlet.

PS51> Get-VMHost
Get-Vmhost
Get-VMHost

deoarece sunt conectat la un aparat de server vCenter care gestionează două gazde ESXi separate, mi se oferă câteva informații de bază despre gazdele gestionate. Get-VMHost vă permite să examinați capacitățile hardware ale gazdelor dvs. de virtualizare. Dar, în mod implicit, Get-VMHost nu returnează toate informațiile pe care le poate.

dacă introducețiGet-VMHostcmdlet laFormat-List, veți obține ieșirea consolei pentru toate informațiile despre gazdele date.

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

alternativ, puteți fi pickier și selectați numai proprietăți individuale pe obiectul vmhost lucrați cu cum ar fi:

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

valorificarea acestei ieșiri mai detaliate va oferi o vizualizare și mai mare a hardware-ului de bază care rulează încărcările de lucru virtualizate. Unele informații, în special, ar fi:

  • informații de validare a licenței
  • CPU/memorie totaluri
  • hardware vendor model
  • DNS hostname

după revizuire, Acest lucru poate fi compilat într-un fișier CSV, probabil, folosind Export-CSV cmdlet.

inspectarea VMs cu PowerCLI

să se arunca cu capul acum într-un alt subiect în acest tutorial PowerCLI prin revizuirea gazde virtuale este revizuirea care mașinile virtuale sunt prezente în prezent pe o anumită gazdă ESXi.

comandaGet-VM este o comandă la îndemână pe care o puteți utiliza pentru a revizui informațiile VM.

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

ieșirea acestui cmdlet va arăta ceva de genul de mai jos:

PS51 Get-Vmhost-Name gazdă FQDN | Get-VM
PS51> Get-VMHost-Name | Get-VM

ieșirea de mai sus oferă o listă completă de stare a VM-urilor care rulează în prezent pe o anumită gazdă. Dacă ar fi să alegeți să nu specificați o gazdă individuală, așa cum am făcut mai sus, veți primi un tabel de informații pentru fiecare gazdă ulterioară și VMs pe fiecare.

dacă depanați vreodată o problemă și trebuie să cunoașteți numărul de mașini virtuale pe o anumită gazdă sau aveți nevoie să utilizați VMware PowerCLI pentru a aduna informații despre gazda ESXi, puteți utiliza aceste cmdleturi înainte. Funcționalitatea de raportare aveți la îndemână începe să se extindă!

inspectarea comutatoarelor virtuale cu PowerCLI

pentru aceia dintre noi însărcinați cu configurarea sau administrarea rețelelor virtuale ale unui cluster vCenter, există o gamă completă de cmdleturi de rețea pentru orice caz de utilizare. Dacă doriți să vedeți comutatoarele virtuale configurate în mediul vSphere, veți utiliza următoarele:

PS51> Get-VirtualSwitch

în funcție de numărul de rețele virtuale și comutatoare virtuale pe care le aveți, lista dvs. rezultată poate fi destul de mare. În cazul meu, după cum vedeți mai jos, am un singur DSwitch, care este un comutator virtual distribuit.

într-o implementare vSphere întreprindere în cazul în care există mai multe gazde ESXi într-un cluster, DSwitches simplifica implementarea switch-uri virtuale și grupuri de porturi într-o multitudine de gazde cu aceeași configurație. Acest lucru economisește pe munca manuală de a crea configurații de rețea identice pe fiecare gazdă manual, și este o modalitate foarte bună de a scala cluster-ul!

Get-VirtualSwitch
Get-VirtualSwitch

găsirea VMs atașat la o rețea virtuală cu PowerCLI

în timp ce încercați să restrângeți domeniul de aplicare al unei probleme, vă puteți întreba ce VM-uri sunt conectate la ce rețele. Pentru a afla acest lucru, puteți utiliza comanda Get-VirtualPortGroup. Să învățăm despre acest cmdlet în acest tutorial PowerCLI.

un grup de porturi este în esență o rețea virtuală. Pentru a afișa toate grupurile de porturi, executați Get-VirtualPortGroup fără parametri. Ar trebui să vedeți apoi o listă a tuturor grupurilor de porturi virtuale prezente în mediul dvs.

Get-VirtualPortGroup
Get-VirtualPortGroup

pentru a găsi toate VM-urile din interiorul acelui grup de porturi (DPortGroup în cazul meu), puteți rula scriptul de mai jos. Asigurați-vă că înlocuiți valoarea DPortGroup cu numele grupului dvs. de porturi virtuale.

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

în acest One-liner, obținem o listă cu toate mașinile virtuale care există în acest aparat vCenter și apoi filtrăm cu Where-Object cmdlet pentru a obține doar acele VM-uri cu un nume de rețea care se potrivește cu grupul nostru de porturi.

obținerea de VM-uri doar cu un anumit grup de porturi
obținerea de VM-uri doar cu un anumit grup de porturi

cu această ieșire, veți putea defini ce mașini sunt conectate și configurate pentru fiecare rețea.

când vi se cere să localizați și să analizați care VM-uri sunt conectate la o anumită rețea în VMware, veți fi acum împuternicit să furnizați o soluție de raportare PowerCLI la această întrebare.

obținerea informațiilor despre versiunea sistemului de operare pe VMs cu PowerCLI

cea mai mare parte a lucrărilor administrative din interiorul VMware se face la nivel de mașină virtuală. Este posibil să primiți nenumărate solicitări de sarcini, cum ar fi preluarea unei liste cu toate dimensiunile hard disk-ului pe VM-uri sau obținerea de versiuni de sistem de operare pentru toate serverele dvs., printre altele.

aceste sarcini sunt greoaie la scară. PowerCLI este capabil să le eficientizeze cu câteva cmdleturi importante de adăugat la arsenalul dvs., așa că haideți să le acoperim în acest tutorial PowerCLI.

este posibil să fi fost întrebat la un moment dat: „câte servere Ubuntu avem în clusterul nostru VMware?”. S-ar putea să fi petrecut prea mult timp făcând clic în vCenter în căutarea unui răspuns. PowerCLI poate eficientiza acest proces uitându-se la obiectele VM din vCenter și aplicând o magie PowerShell pe ieșire.

Aruncati o privire la următorul script care trage împreună informații VM. Acest fragment folosește Get-View comanda pe care o vom intra puțin mai târziu, dar deocamdată, trebuie să știți că este o modalitate avansată de a prelua proprietățile obiectului VMware. În acest caz, adunăm proprietăți imbricate care sunt cel mai ușor de recuperat în această metodă.

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}}

codul de mai sus preia o listă de mașini virtuale prin PowerCLI Get-VM cmdlet, sortând lista respectivă cu PowerShell Sort-Object cmdlet, apoi regăsind unele dintre proprietățile obiectului folosind PowerCLI Get-View cmdlet.

rularea acestui lucru în mediul meu produce rezultatul de mai jos. Puteți vedea numele VM în vCenter, Configured OS care este modul în care hardware-ul virtual VMware este setat să interpreteze sistemul de operare invitat și Running OS care reprezintă sistemul de operare real.

găsirea VM-urilor pe baza diferitelor criterii
găsirea VM-urilor pe baza diferitelor criterii

cu replicantul VMs și Scriptrunner sunt oprite în cluster, nu veți putea vedea valoarea Running OS pentru ei. Sistemul de operare este adunat de serviciul VMware Tools. Dacă nu este disponibil, PowerCLI nu poate trage informațiile sistemului de operare.

crearea de rapoarte CSV cu PowerCLI

VMware Tools este un serviciu in-guest atât pentru Windows și Linux VMs, care oferă hipervizor informații suplimentare și capabilități administrative. Cel mai frecvent, acest lucru va oferi clean-shutdown, informații despre sistemul de operare și vizualizarea consolei cu rezoluție mai mare a VMs.

o modalitate convenabilă de a raporta și de a furniza aceste informații ar fi să introduceți scriptul de mai sus înExport-CSV cmdlet. Export-Csv va crea un fișier CSV cu aceleași informații pe care le vedeți în consolă.

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 

după rularea codului de mai sus, ar trebui să puteți deschide fișierul CSV cu Excel pentru a revizui raportul.

fișier CSV de informații VM
fișier CSV de informații VM

inspectarea hard disk-uri virtuale cu PowerCLI

comanda Get-Harddisk este o altă comandă utilă de știut. Get-HardDisk cmdletul vă permite să inspectați informații despre hard disk-urile virtuale atașate la VM-uri.

de exemplu, pentru a interoga informații despre hard diskul virtual atașat la Exchange1 VMs, puteți rula următoarele:

PS51> Get-VM -Name exchange1 | Get-HardDisk | Format-List
interogați informații despre hard diskul virtual atașat la exchange1 VMs
interogați informații despre hard diskul virtual atașat la exchange1 VMs

unele dintre aceste informații pot fi redundante, cum ar fi capacitatea în Kb vs.GB. Dar există valoare în cunoașterea StorageFormat (tipuri de aprovizionare subțiri/groase). Și știind numele fișierului VMDK.

de exemplu, dacă vedeți o problemă comună și toate hard disk-urile VM se află pe același volum de magazin de date, aceste cunoștințe pot accelera depanarea.

inspectarea adaptoarelor de rețea virtuală cu PowerCLI

pe lângă examinarea informațiilor de pe hard disk ale mașinilor dvs. virtuale, poate doriți să verificați și adaptoarele de rețea virtuală. Pentru a verifica aceste proprietăți pentru un singur VM, puteți utilizaGet-NetworkAdpter cmdlet.

PS51> Get-NetworkAdapter -VM myVM

în timp ce ați vânat mai devreme în acest port pentru toate VM-urile care locuiesc în aceeași rețea, de data aceasta doriți doar să vedeți adaptoarele conectate la un anumit VM.

Get-NetworkAdapter
Get-NetworkAdapter

Acest lucru este util dacă depanarea VMs care au mai multe adaptoare de rețea conectate. Puteți determina rapid și dintr-o privire dacă aceste adaptoare sunt conectate la rețelele corespunzătoare.

rularea scripturilor PowerShell în VM-uri cu Invoke-Vmscript

folosindInvoke-VMScript, puteți rula și Codul PowerShell direct în interiorul VM; nu este necesară conectivitatea la rețea. Dacă ați folosit vreodată PowerShell Direct într-un mediu Hyper-V, aceasta va fi o experiență similară.

în loc să creeze o sesiune de Remoting PowerShell sau să utilizeze Invoke-Command cmdlet prin rețea, Invoke-VMScript cmdlet poate trimite comenzi direct la VM fără conectivitate normală WinRM sau SSH.

ca exemplu, poate doriți să efectuați o listă simplă de directoare pe un VM numit exchange1. Pentru a face acest lucru, veți trece dir C:\ ca valoare pentru parametrul ScriptText așa cum se arată mai jos.

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

rezultatele sunt ca și cum ați fi rulat comenzile din consola VM în sine. Invoke-VMScript apoi relee Toate ieșire comanda care a fost rulat pe returnează VM.

Invoke-Vmscript
Invoke-VMScript

deși acesta este un exemplu de bază, puteți obține cât de complicat doriți. Acest cmdlet PowerCLI vă permite să specificați tipurile batch, PowerShell sau Bash în parametrulScriptText.

puteți obține mai avansate, de asemenea. Mai jos puteți vedea cum să utilizați Invoke-VMScript pentru a rula codul PowerShell folosind o variabilă separată $script pentru intrarea parametrului ScriptText. Acest lucru ne permite să creăm o intrare de script mai personalizată pentru procesarea VM.

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

ScriptText valoarea parametrului are nevoie de un șir. Acesta este motivul pentru care variabila $script are ca necesitate citatele unice exterioare.

este posibil să fi observat și utilizarea parametrului GuestCredential. Acest parametru este utilizat pentru autentificarea în sistemul de operare VM. Acest parametru este util mai ales dacă doriți să rulați scriptul ca un cont diferit.

scriptul dvs. în acțiune ar trebui să aibă ca rezultat o ieșire similară cu cea de mai jos.

rularea unui script pe un VM cu Invoke-Vmscript
rularea unui script pe un VM cu Invoke-VMScript

rezultatul din acest script ne oferă informații despre discul vm. Pe baza acestui lucru, ar trebui să știți că este un VM la distanță din cauza VMware Virtual Disk ca nume prietenos al unității.

Noțiuni de bază avansate cu Get-View

este posibil să fi văzut unele cmdleturi de bază returnând o proprietate numităExtensionData. Puteți găsi această proprietate prin conectarea mai multor cmdleturi PowerCLI la PowerShell Get-Member cmdlet. Dacă vă întrebați ce a fost asta, acum e șansa ta de a afla.

următorul pas în această afacere este înțelegereaGet-View cmdlet. VMware PowerCLI foloseste multe interogări diferite la VM pentru a oferi ieșire destul și simplu de Get-VM. Dar există o mulțime sub capotă care este accesibilă numai prin utilizarea Get-View cmdlet.

este posibil să vedeți o mulțime de scripturi folosind acest cmdlet. Ar fi bine să petreceți ceva timp obișnuindu-vă să vedeți acest cmdlet în acțiune. Pentru a vă familiariza, utilizațiGet-View cmdlet pentru a obține câteva informații despre mașina virtuală (exchange1 în acest exemplu).

puteți vedeaFilter opțiunile acestui cmdlet necesită utilizarea unui hashtable PowerShell și nu a unor valori de șir individuale. Fiți conștienți atunci când vă construiți propriile scripturi unice!

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

rezultatul comenzii de mai sus este o mulțime de informații de configurare imbricate și opțiuni de metodă pentru a lua măsuri împotriva VM sau obținerea proprietăților obiectului.

Get-View
Get-View

Dacă utilizați același script de mai sus și trimiteți ieșirea la o variabilă, puteți inspecta acele opțiuni imbricate cu dot notație. Aici puteți vedea și prelua toate informațiile suplimentare ale sistemului de operare invitat, pe care poate doriți să le raportați prin PowerCLI.

PS51> $VM = Get-View -ViewType VirtualMachine -Filter @{"Name" = "myVMName"}PS51> $VM.Guest
utilizarea Get-View cu parametrul filtru
utilizarea Get-View cu parametrul filtru

poate doriți să selectați o singură proprietate. Dacă da, puteți rula următoarele pentru a restrânge o valoare individuală.

PS51> $VM.Guest.GuestFullName

există multeGet-View opțiuni pentru toate tipurile de obiecte VMware. Simțiți-vă liber să explorați toate aceste opțiuni și să revizuiți acest articol informativ de la VMware care merge în profunzime pe acest cmdlet puternic!

VMware Code Capture – aflați de la clicuri

Dacă doriți să profite de PowerCLI, dar ar prefera să nu construiască cod prin tastarea, Codul De captare în vCenter este aici pentru tine. Code Capture este un nou instrument pentru dezvoltatori care acționează similar cu centrul administrativ Active Directory. Să acopere Codul De captare în acest tutorial PowerCLI.

acest instrument înregistrează toate acțiunile pe care le efectuați în GUI. Apoi transformă toate aceste acțiuni și vă oferă scripturi PowerCLI.

în mod implicit, captarea Codului nu este activată. Pentru a –l porni, deschideți aparatul vCenter și navigați la Meniu – > Developer Center așa cum se arată mai jos.

navigarea la elementul de meniu Developer Center din vSphere
navigarea la elementul de meniu Developer Center din vSphere

o dată la fila Developer Center, comutați opțiunea Activare captare cod.

activarea captării codului
activarea captării codului

când activați captarea codului, veți vedea apoi un buton roșu de înregistrare în antetul vCenter. Odată activat, ori de câte ori doriți să aveți o acțiune înregistrată și transformată în ieșire PowerCLI, trebuie să înregistrați activitatea GUI apăsând butonul de înregistrare.

code capture enabled indicator
code capture enabled indicator

butonul roșu de înregistrare va apărea lângă secțiunea de utilizator conectat din vCenter, astfel încât să puteți înregistrați în orice moment.

pentru a demonstra captarea Codului, parcurgeți noul asistent de creare a mașinii virtuale.

  1. Faceți clic pe butonul Înregistrare pentru a începe înregistrarea. Acest lucru va face ca butonul roșu de înregistrare să înceapă să pulseze.
  2. faceți clic dreapta pe gazda VMware și creați o nouă mașină virtuală. Rulați prin expertul rezultat creând o nouă mașină virtuală cu toate valorile implicite.
  3. odată ce mașina virtuală este creată, faceți clic pe butonul Înregistrare și opriți înregistrarea.

rezultatul rezultat poate fi puțin mai detaliat decât se anticipase. Ieșirea include chiar toate acțiunile de navigare GUI înainte de a crea VM. Dar ar trebui să vedeți o secțiune notată în comentariile care încep cu CreateVM_Task. Acesta este locul în care codul începe să creeze un VM.

Mai jos este o porțiune a ieșirii CreateVM_Task a noului proces vm Wizard în GUI prin captarea Codului:

codul generat de Centrul de dezvoltatori
codul generat de Centrul de dezvoltatori

această ieșire poate fi puțin copleșitoare, dar vă expune direct la numărul de opțiuni de configurare disponibile pentru mașinile dvs. virtuale. În funcție de propriile nevoi, acum sunteți împuternicit să faceți ajustări în propriile scripturi și să personalizați conținutul inimii.

utilitarul de captare a Codului nu se limitează doar la crearea VM. Se poate construi, de asemenea, cod pentru modificări de rețea, mici modificări VM, sau modificări de configurare gazdă. Prin posibilitatea de a revizui ieșirea PowerCLI a acțiunilor GUI, puteți lua o comandă rapidă în călătoria dvs. către infrastructura implementată ca cod.

PowerCLI Tutorial rezumat

în acest articol, ați acoperit o mulțime de teren. Bună treabă! Sper că ați realizat puterea pe care PowerCLI o aduce gestionării infrastructurii VMware.există o mulțime de cmdleturi în PowerCLI pentru o gamă largă de baze de produse, dar am acoperit doar câteva aici. Asigurați-vă că rămâneți la curent cu acest blog pentru mai multe articole despre acest instrument minunat!

Lectură suplimentară

  • cum se descarcă și se instalează PowerCLI
  • documente oficiale VMware PowerCLI

Lasă un răspuns

Adresa ta de email nu va fi publicată.