PowerCLI van VMWare wordt de alomtegenwoordige interface voor hypervisor virtualisatie beheerders van ESXi ondersteunde hardware. Leren hoe VMware te beheren via PowerShell en PowerCLI is een sterke aanvulling op uw toolkit. In deze PowerCLI tutorial ga je leren hoe je dat moet doen.
In deze tutorial leert u:
- de basisprincipes van het verbinden met VMware-infrastructuur met PowerCLI
- maak uzelf vertrouwd met cmdlets voor het werken met VMware-objecten
- stel uzelf in staat met de kennis om
- VMware verder te verkennen via PowerCLI
laten we aan de slag gaan!
inhoudsopgave
wat u moet hebben en weten
voordat u te ver gaat in deze PowerCLI tutorial, is het altijd belangrijk om ervoor te zorgen dat u en ik beide op dezelfde pagina zijn. Voor dit artikel, Ik ga ervan uit dat:
- u hebt basiservaring met PowerShell. Je hoeft op geen enkele manier een PowerShell expert te zijn, maar elke PowerShell vertrouwdheid die je hebt zal je goed van dienst zijn.
- u hebt een VMware ESXi host of vCenter appliance voor het verbinden en testen van
- u werkt op een Windows (of Mac / Linux) werkstation
- u hebt PowerCLI al geïnstalleerd en bent verbonden. Zo niet, bekijk dan dit PowerCLI installatie artikel.
Ik zal PowerCLI v 11.4.0 gebruiken. Ik zal werken vanaf een Windows 10 werkstation met Windows PowerShell 5.1, maar je bent van harte welkom om PowerShell 6 te gebruiken in plaats van er feature parity voor deze tutorial.
verzamel informatie over ESXi Hosts met PowerCLI
voordat u in de virtuele laag van onze vSphere-omgeving duikt, is het een goed idee om de fysieke hardwarelaag te bekijken. VMware PowerCLI levert een cmdlet direct voor dit doel, om gedetailleerde informatie te verzamelen genaamd Get-VMHost
.
terwijl u verbonden bent met uw vCenter-server of ESXi-host, voert u de volgende cmdlet uit.
PS51> Get-VMHost
sinds ik verbonden ben met een vCenter server appliance die twee afzonderlijke ESXi hosts beheert, ik ben voorzien van een aantal basisinformatie over de hosts die worden beheerd. Met de Get-VMHost
kunt u de hardware mogelijkheden van uw virtualisatie hosts bekijken. Maar standaard geeft Get-VMHost
niet alle informatie terug die het kan.
Als u de Get-VMHost
cmdlet pipe naar Format-List
, krijgt U console-uitvoer voor alle informatie over de opgegeven hosts.
selecteer alleen individuele eigenschappen op het vmhost-object waarmee u werkt zoals:
PS51> Get-VMHost | format-list -Property State,LicenseKey,Version
door gebruik te maken van deze meer uitgebreide uitvoer zal een nog groter beeld worden gegeven van de onderliggende hardware die uw gevirtualiseerde workloads uitvoert. Een deel van de informatie, in het bijzonder, zou zijn:
- License validation info
- CPU/geheugen totalen
- Hardware vendor model
- DNS hostname
na beoordeling kan dit worden gecompileerd in een CSV-bestand, misschien met behulp van de Export-CSV
cmdlet.
het inspecteren van VM ‘ s met PowerCLI
laten we nu in een ander onderwerp in deze PowerCLI tutorial duiken door virtuele hosts te herzien is het beoordelen van welke virtuele machines momenteel aanwezig zijn op een bepaalde ESXi host.
het Get-VM
commando is een handig commando dat u kunt gebruiken om VM-informatie te bekijken.
PS51> Get-VMHost -Name <Host FQDN> | Get-VM
De uitvoer van deze cmdlet zal er ongeveer als hieronder uitzien:
De uitvoer hierboven geeft een volledige Statuslijst van momenteel draaiende VM ‘ s op een bepaalde host. Als je ervoor kiest om geen individuele host op te geven, zoals ik hierboven heb gedaan, ontvang je een tabel met informatie voor elke volgende host en de VMs op elke host.
Als u ooit een probleem oplost en het aantal virtuele machines op een bepaalde host wilt weten of als u VMware PowerCLI wilt gebruiken om ESXi-hostinformatie te verzamelen, kunt u deze cmdlets in de toekomst gebruiken. De rapporteringsfunctionaliteit die u binnen handbereik hebt, begint uit te breiden!
inspecteren van virtuele Switches met PowerCLI
voor degenen onder ons die belast zijn met het configureren of beheren van de virtuele netwerken van een vCenter-cluster, is er een volledig scala aan netwerk-cmdlets voor elk gebruik. Als u de virtuele switches wilt zien die in uw vSphere-omgeving zijn geconfigureerd, gebruikt u het volgende:
PS51> Get-VirtualSwitch
afhankelijk van het aantal virtuele netwerken en virtuele switches dat u hebt, kan uw resulterende lijst vrij groot zijn. In mijn geval, zoals je hieronder ziet, Ik heb een enkele DSwitch die een gedistribueerde virtuele Switch.
in een Enterprise vSphere-implementatie waar er veel ESXi-hosts in een cluster zijn, vereenvoudigen DSwitches de implementatie van virtuele switches en poortgroepen over een groot aantal hosts met dezelfde configuratie. Dit bespaart op de handmatige arbeid van het creëren van identieke netwerkconfiguraties op elke host handmatig, en is een geweldige manier om uw cluster schaal!
het vinden van VM ’s die zijn aangesloten op een virtueel netwerk met PowerCLI
terwijl wordt geprobeerd de scope van een probleem, kunt u zich afvragen welke VM’ s zijn verbonden met welke netwerken. Om dat uit te zoeken, kunt u het commando Get-VirtualPortGroup
gebruiken. Laten we leren over deze cmdlet in deze PowerCLI tutorial.
een poortgroep is in wezen een virtueel netwerk. Om alle poortgroepen weer te geven, voer je Get-VirtualPortGroup
uit zonder parameters. Je zou dan een lijst moeten zien van alle virtuele port groepen die aanwezig zijn in je vSphere omgeving.
om alle VM ‘ s binnen die portgroep (dportgroup in mijn geval) te vinden, kunt u de onder het script. Zorg ervoor dat u de waarde DPortGroup vervangt door de naam van uw virtuele poort Groep.
PS51> Get-VM | Where-Object { ($PSItem | Get-NetworkAdapter | where {$_.networkname -match "DPortgroup"})}
in deze one-liner krijgen we een lijst van alle virtuele machines die bestaan in dit vCenter apparaat, en filteren vervolgens met de Where-Object
cmdlet om alleen die VM ‘ s te krijgen met een netwerknaam die overeenkomt met onze Poortgroep.
Met deze uitvoer kunt u bepalen welke machines zijn verbonden en geconfigureerd voor elk netwerk.
wanneer u wordt gevraagd om te lokaliseren en te analyseren welke VM ‘ s zijn verbonden met een bepaald netwerk in VMware, krijgt u nu de bevoegdheid om een PowerCLI-rapportageoplossing voor deze vraag te bieden.
het verkrijgen van OS versie informatie op uw VM ‘ s met PowerCLI
het grootste deel van het administratieve werk binnen VMware wordt gedaan op het niveau van de virtuele machine. U zult waarschijnlijk talloze verzoeken ontvangen voor taken zoals het ophalen van een lijst met alle harde schijfformaten op VM ‘ s of het verkrijgen van Gast OS-versies voor onder andere al uw servers.
deze taken zijn op grote schaal omslachtig. PowerCLI is in staat om deze te stroomlijnen met een paar belangrijke cmdlets toe te voegen aan je arsenaal, dus laten we ze behandelen in deze PowerCLI tutorial.
op een gegeven moment is u misschien gevraagd: “hoeveel Ubuntu-servers hebben we in ons VMware-cluster?”. Je zou dan veel te veel tijd hebben besteed aan het klikken rond in vCenter op zoek naar een antwoord. PowerCLI kan dit proces stroomlijnen door naar de VM-objecten in vCenter te kijken en wat PowerShell-magie op de uitvoer toe te passen.
bekijk het volgende script dat VM-informatie samenbrengt. Dit fragment gebruikt het Get-View
Commando waar we iets later op ingaan, maar voor nu moet u weten dat het een geavanceerde manier is om VMware objecteigenschappen op te halen. In dit geval verzamelen we geneste eigenschappen die het gemakkelijkst worden opgehaald in deze methode.
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}}
de bovenstaande code is het ophalen van een lijst van virtuele machines via de PowerCLI Get-VM
cmdlet, Sorteren die lijst met de PowerShell Sort-Object
cmdlet, en vervolgens het ophalen van een aantal van de objecteigenschappen met behulp van de PowerCLI Get-View
cmdlet.
Dit uitvoeren in mijn omgeving levert het onderstaande resultaat op. U kunt de naam van de VM zien in vCenter, de Configured OS
dat is hoe de virtuele hardware van VMware is ingesteld om het gastbesturingssysteem te interpreteren, en de werkelijke Running OS
dat het werkelijke besturingssysteem vertegenwoordigt.
als de VMS-replicant en Scriptrunner zijn uitgeschakeld in het cluster, zult u niet kunnen zien de Running OS
waarde voor hen. Het besturingssysteem wordt verzameld door de VMware Tools service. Als deze niet beschikbaar is, kan PowerCLI de informatie over het besturingssysteem niet ophalen.
CSV-rapporten maken met PowerCLI
VMware Tools is een in-guest service voor zowel Windows als Linux VM ‘ s die de hypervisor aanvullende informatie en beheermogelijkheden biedt. Meestal zal dit zorgen voor clean-shutdown, besturingssysteem informatie, en hogere resolutie console weergave van de VMs.
een handige manier om deze informatie te rapporteren en te verstrekken is door het bovenstaande script naar de Export-CSV
cmdlet te pipen. Export-Csv
zal een CSV-bestand aanmaken met dezelfde informatie als in de console.
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
na het uitvoeren van de bovenstaande code, moet u in staat zijn om het CSV-bestand te openen met Excel om het rapport te bekijken.
de Inspectie van Virtuele Harde Schijven met PowerCLI
De Get-Harddisk
commando is een andere nuttige commando om te weten. Met deGet-HardDisk
cmdlet kunt u informatie over virtuele harde schijven die aan VMs zijn gekoppeld, inspecteren.
Als u bijvoorbeeld informatie wilt opvragen over de virtuele harde schijf die is gekoppeld aan de Exchange 1 VM ‘ s, kunt u het volgende uitvoeren::
PS51> Get-VM -Name exchange1 | Get-HardDisk | Format-List
sommige van deze informatie kan redundant zijn, zoals de capaciteit in KB vs.GB. Maar er is waarde in het kennen van de StorageFormat
(thin/thick provisioning types). En het kennen van de VMDK bestandsnaam.
Als u bijvoorbeeld een veelvoorkomend probleem ziet en alle VM-harde schijven zich op hetzelfde datastore-volume bevinden, kan deze kennis het oplossen van problemen versnellen.
virtuele netwerkadapters inspecteren met PowerCLI
naast het bekijken van de harde schijf informatie van uw virtuele machines, kunt u ook de virtuele netwerkadapters controleren. Om deze eigenschappen voor een enkele VM te controleren, kunt u de Get-NetworkAdpter
cmdlet gebruiken.
PS51> Get-NetworkAdapter -VM myVM
terwijl u eerder had gejaagd in deze poort voor alle VM ‘ s die zich in hetzelfde netwerk bevinden, wilt u deze keer alleen de adapters zien die verbonden zijn met een bepaalde VM.
Dit is nuttig bij het oplossen van problemen met VM ‘ s die meerdere netwerkadapters hebben aangesloten. U kunt snel en in één oogopslag bepalen of deze adapters zijn aangesloten op de juiste netwerken.
het uitvoeren van PowerShell-Scripts in VM ’s met Invoke-VMScript
met Invoke-VMScript
kunt u PowerShell-code ook direct in de VM uitvoeren; er is geen netwerkverbinding nodig. Als je ooit PowerShell Direct hebt gebruikt in een Hyper-V omgeving, zal dit een soortgelijke ervaring zijn.
in plaats van een PowerShell Remoting sessie aan te maken of de Invoke-Command
cmdlet over het netwerk te gebruiken, kan de Invoke-VMScript
cmdlet opdrachten rechtstreeks naar de VM verzenden zonder normale WinRM-of SSH-connectiviteit.
als voorbeeld, misschien wilt u een eenvoudige directory listing uitvoeren op een VM genaamd exchange1. Om dit te doen, zou u dir C:\
doorgeven als de waarde voor de parameter ScriptText
zoals hieronder getoond.
PS51> Invoke-VMScript -VM exchange1 -ScriptText "dir C:\"
de resultaten zijn alsof u de commando ‘ s van de VM console zelf hebt uitgevoerd. Invoke-VMScript
geeft dan alle uitvoer door van het commando dat werd uitgevoerd op de VM.
hoewel dit een basisvoorbeeld is, kunt u zo ingewikkeld worden als u wilt. Met deze PowerCLI cmdlet kunt u batch -, PowerShell-of Bash-typen opgeven binnen de parameter ScriptText
.
u kunt ook geavanceerder worden. Hieronder kunt u zien hoe u Invoke-VMScript
gebruikt om PowerShell-code uit te voeren met behulp van een aparte $script
variabele voor de ScriptText
parameter input. Dit stelt ons in staat om meer aangepaste scriptinvoer te maken voor de VM om te verwerken.
PS51> $script = 'Get-Disk'$guestCredential = Get-CredentialInvoke-VMScript -ScriptText $script -VM VM -GuestCredential $guestCredential -ScriptType Powershell
de ScriptText
parameter waarde heeft een string nodig. Dit is de reden waarom de variabele $script
de single-outer-quotes als een noodzaak heeft.
u hebt mogelijk ook het gebruik van de GuestCredential
parameter opgemerkt. Deze parameter wordt gebruikt om te verifiëren bij het VM-besturingssysteem. Deze parameter is vooral handig als je het script als een ander account wilt draaien.
uw script in actie moet resulteren in uitvoer zoals hieronder.
het resultaat van dit script geeft ons de VM ‘ s schijfinformatie. Gebaseerd op dat, zou je moeten weten dat het een remote VM is vanwege de VMware Virtual Disk
als de beschrijvende naam van het station.
Geavanceerd worden met Get-View
u hebt mogelijk enkele van de basis cmdlets een eigenschap zien retourneren met de naam ExtensionData
. U kunt deze eigenschap vinden door veel PowerCLI cmdlets door te leidingen naar de PowerShell Get-Member
cmdlet. Als je je afvraagt wat dat was, nu is je kans om het uit te zoeken.
de volgende stap in deze onderneming is het begrijpen van de Get-View
cmdlet. VMware PowerCLI maakt gebruik van veel verschillende queries aan de VM om de mooie en eenvoudige uitvoer van Get-VM
te leveren. Maar er is veel onder de motorkap dat alleen toegankelijk is met behulp van de Get-View
cmdlet.
u zult waarschijnlijk veel scripts zien met deze cmdlet. Het zou je betaamt om wat tijd te besteden aan het zien van deze cmdlet in actie. Om vertrouwd te raken, gebruik je de Get-View
cmdlet om wat virtuele machine informatie te krijgen (Exchange 1 in dit voorbeeld).
u kunt de Filter
opties van deze cmdlet zien die het gebruik van een PowerShell hashtable en niet individuele tekenreekswaarden vereisen. Wees bewust bij het bouwen van uw eigen unieke scripts!
PS51> Get-View -ViewType VirtualMachine -Filter @{"Name" = "myVMName"}
het resultaat van het bovenstaande commando is veel geneste configuratie-informatie en methodeopties voor het nemen van acties tegen de VM of het verkrijgen van objecteigenschappen.
Als u hetzelfde script hierboven gebruikt en de uitvoer naar een variabele verzendt, kunt u deze geneste opties inspecteren met puntnotatie. Hier kunt u al die aanvullende informatie van het gastbesturingssysteem zien en ophalen, waarover u mogelijk via PowerCLI wilt rapporteren.
PS51> $VM = Get-View -ViewType VirtualMachine -Filter @{"Name" = "myVMName"}PS51> $VM.Guest
om een enkele eigenschap te selecteren. Als dat zo is, kunt u het volgende uitvoeren om een individuele waarde te beperken.
PS51> $VM.Guest.GuestFullName
er zijn veel Get-View
opties voor alle typen VMware-objecten. Voel je vrij om al deze opties te verkennen en bekijk dit informatieve artikel van VMware dat gaat in de diepte op deze krachtige cmdlet!
VMware Code Capture-leer van uw klikken
als u gebruik wilt maken van PowerCLI, maar liever geen code wilt bouwen door te typen, is Code Capture in vCenter hier voor u. Code Capture is een nieuwe ontwikkelaarstool die op dezelfde manier werkt als het Beheerderscentrum voor Active Directory. Laten we codevastlegging behandelen in deze PowerCLI tutorial.
deze tool registreert alle acties die u onderneemt binnen de GUI. Het transformeert dan al die acties en biedt u met PowerCLI scripts.
standaard is het vastleggen van Code niet ingeschakeld. Om het aan te zetten opent u uw vCenter –apparaat en navigeert u naar Menu – > Developer Center zoals hieronder weergegeven.
eenmaal op het tabblad ontwikkelaarscentrum, schakelt u de optie Code Capture inschakelen in.
wanneer u code Capture inschakelt, ziet u een rode recordknop in uw vCenter-header. Eenmaal ingeschakeld, wanneer u een actie wilt laten opnemen en omzetten in PowerCLI-uitvoer, moet u de GUI-activiteit opnemen door op de opnameknop te drukken.
De rode opnameknop verschijnt naast uw ingelogde gebruikerssectie van vCenter, zodat u nu op elk gewenst moment kunt opnemen.
om het vastleggen van Code te demonstreren, gaat u door de wizard Nieuwe virtuele Machine maken.
- klik op de knop Opnemen om de opname te starten. Dit zal ervoor zorgen dat de rode opnameknop begint te pulsen.
- Klik met de rechtermuisknop op uw VMware-host en maak een nieuwe virtuele Machine aan. Voer de resulterende wizard uit en maak een nieuwe virtuele machine met alle standaardwaarden.
- zodra de virtuele machine is aangemaakt, klikt u op de knop Opnemen en stopt u de opname.
de resulterende output kan iets uitgebreider zijn dan verwacht. De uitvoer bevat zelfs alle acties van het bladeren door de GUI voordat u de VM maakt. Maar u zou een sectie moeten zien die aangegeven wordt in de commentaren die beginnen met CreateVM_Task
. Hier begint de code een VM aan te maken.
Hieronder is een gedeelte van de CreateVM_Task uitvoer van het nieuwe VM Wizard proces in de GUI via Code Capture:
deze uitvoer kan een beetje overweldigend zijn, maar het stelt u direct bloot aan het aantal beschikbare configuratieopties voor uw virtuele machines. Afhankelijk van je eigen behoeften, ben je nu bevoegd om aanpassingen te maken in je eigen scripts en aan te passen naar hartenlust.
Het programma Code Capture is niet beperkt tot het maken van VM ‘ s. Het kan ook code bouwen voor netwerkwijzigingen, kleine VM-wijzigingen of hostconfiguratiewijzigingen. Door de PowerCLI-uitvoer van GUI-acties te kunnen bekijken, kunt u een snelkoppeling nemen op uw reis naar infrastructuur die als code wordt ingezet.
samenvatting van de PowerCLI-Tutorial
In dit artikel hebt u een groot aantal onderwerpen behandeld. Goed gedaan! Ik hoop dat je de kracht hebt gerealiseerd die PowerCLI met zich meebrengt voor het beheren van VMware-infrastructuur.
Er zijn veel cmdlets in PowerCLI voor een breed scala aan productbasissen, maar we hebben er hier slechts een paar behandeld. Zorg ervoor dat u op de hoogte blijven van deze blog voor meer artikelen over deze geweldige tool!
verder lezen
- downloaden en installeren van PowerCLI
- officiële VMware PowerCLI docs