Adam the Automator

PowerCLI by VMWare is becoming the ubiquitous interface for hypervisor virtualization administrator of ESXi supported hardware. VMwaren hallinnan oppiminen PowerShellin ja Powerclin kautta on vahva lisä työkalupakkiisi. Tässä PowerCLI opetusohjelma, aiot oppia tekemään juuri niin.

tässä opetusohjelmassa opit:

  • the basics of connecting to VMware infrastructure with Powerclilla
  • tutustu cmdleteihin VMware-objektien kanssa työskentelyyn
  • anna itsellesi tieto tutkia
  • hallita VMwarea edelleen Powerclillä

Let ’ s get to it!

Sisällysluettelo

mitä sinun tulee olla ja tietää

ennen kuin pääset liian pitkälle tässä Powerclin opetusohjelmassa, on aina tärkeää varmistaa, että olemme molemmat samalla sivulla. Tämän artikkelin, aion olla olettaen, että:

  • sinulla on perus PowerShell-kokemus. Sinun ei tarvitse olla PowerShell-asiantuntija millään tavalla, mutta kaikki PowerShell-tuntemuksesi palvelee sinua hyvin.
  • sinulla on VMware ESXi-isäntä-tai vCenter-laite liittämiseen ja testaamiseen
  • työskentelet Windows (tai Mac/Linux) – työasemalla
  • sinulla on PowerCLI jo asennettuna ja ne on kytketty. Jos ei, tutustu PowerCLI asennus artikkeli.

I ’ ll be using PowerCLI v 11.4.0. Työskentelen Windows 10-työasemasta, jossa on Windows PowerShell 5.1, mutta olet tervetullut käyttämään PowerShell 6: ta sen sijaan, koska tässä opetusohjelmassa on ominaisuuspariteetti.

kerää tietoa ESXi-isännistä Powerclillä

ennen kuin sukellat virtuaaliseen vSphere-ympäristöömme, on hyvä idea käydä läpi fyysinen laitteistokerros. VMware PowerCLI tarjoaa tähän tarkoitukseen suoraan cmdletin, johon voi kerätä yksityiskohtaisia tietoja nimellä Get-VMHost.

kun olet yhteydessä vCenter-palvelimeen tai ESXi-palvelimeen, suorita seuraava cmdlet.

PS51> Get-VMHost
Get-VMHost
Get-VMHost

koska olen yhteydessä vCenter-palvelinlaitteeseen, joka hallinnoi kahta erillistä ESXi-isäntää, minulle on toimitettu joitakin perustietoja isäntien hallinnasta. Get-VMHost voit tarkistaa virtualisointi-isäntien laitteistokyvyt. Mutta oletusarvoisesti Get-VMHost ei palauta kaikkea mahdollista tietoa.

Jos piippaat Get-VMHost cmdlet Format-List, saat konsolitulosteen kaikista annetuista isännistä.

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

p>vaihtoehtoisesti voit olla pickier ja valita vain yksittäisiä ominaisuuksia vmhost-objektista, jonka kanssa työskentelet:

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

tämän monisanaisemman ulostulon hyödyntäminen antaa vielä suuremman kuvan taustalla olevasta laitteistosta, joka suorittaa virtualisoituja työkuormia. Joitakin tietoja, erityisesti, olisi:

  • lisenssin validointi info
  • suoritin/Muisti yhteensä
  • Laitteistotoimittajan malli
  • DNS hostname

tarkastelun jälkeen tämä voidaan koota CSV-tiedostoksi ehkä käyttämällä Export-CSV cmdlet.

VMS: n tarkastaminen Powerclillä

nyt sukelletaan toiseen aiheeseen tässä PowerCLI-opetusohjelmassa tarkastelemalla virtuaalisia isäntiä, tarkistetaan, mitkä virtuaalikoneet ovat tällä hetkellä läsnä tietyssä ESXi-isännässä.

Get-VM komento on kätevä komento, jolla voi tarkistaa VM: n tietoja.

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

tämän cmdletin ulostulo näyttää suunnilleen samalta kuin alla:

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

yllä oleva tuloste tarjoaa täydellisen tilaluettelon tällä hetkellä käynnissä olevista vms-järjestelmistä tietyllä palvelimella. Jos päätät olla määrittelemättä yksittäistä isäntää, kuten olen tehnyt edellä, saat taulukon tiedot jokaisesta seuraavasta isännästä ja kunkin VMs: stä.

Jos olet joskus vianmäärityksessä ja haluat tietää virtuaalikoneiden määrän tietyssä isännässä tai sinulla on tarve käyttää VMware Powercliä ESXi-isäntätietojen keräämiseen, voit käyttää näitä cmdletejä eteenpäin. Hyppysissäsi oleva raportointitoiminto alkaa laajentua!

Virtuaalikytkinten tarkastaminen Powerclillä

niille meistä, jotka ovat vastuussa vCenter Clusterin virtuaaliverkkojen määrittämisestä tai hallinnoinnista, on olemassa täysi valikoima verkkoyhteyksiä mihin tahansa käyttötapaukseen. Jos haluat nähdä virtuaalikytkimet, jotka on määritetty vSphere-ympäristössäsi, käytät seuraavaa:

PS51> Get-VirtualSwitch

riippuen virtuaaliverkkojen ja virtuaalikytkimien määrästä, tuloksena oleva luettelo voi olla melko suuri. Minun tapauksessani, kuten näette alla, minulla on yksi DSwitch, joka on jaettu virtuaalinen kytkin.

Enterprise vSphere-toteutuksessa, jossa klusterissa on useita ESXi-isäntiä, DSW-Kytkimet yksinkertaistavat virtuaalikytkimien ja porttiryhmien käyttöönottoa lukuisissa isännissä, joilla on sama kokoonpano. Tämä säästää manuaalista työtä luoda identtinen verkko kokoonpanojen kunkin isännän manuaalisesti, ja on hyvä tapa skaalata klusterin!

Get-VirtualSwitch
Get-VirtualSwitch

Finding VMS Attached to a Virtual Network with PowerCLI

yrittäessäsi rajata ongelman laajuutta saatat ihmetellä, mitkä VMS: t ovat yhteydessä mihinkin verkkoon. Sen voi selvittää komennolla Get-VirtualPortGroup. Katsotaanpa oppia tästä cmdlet tässä PowerCLI opetusohjelma.

porttiryhmä on käytännössä virtuaaliverkko. Näytä kaikki porttiryhmät ajamalla Get-VirtualPortGroup ilman parametreja. Tämän jälkeen sinun pitäisi nähdä luettelo kaikista virtuaaliporttiryhmistä, jotka ovat läsnä vSphere-ympäristössäsi.

Get-VirtualPortGroup
Get-VirtualPortGroup

löytää kaikki kyseisen porttiryhmän (DPortGroup minun tapauksessani), voit suorittaa alla skripti. Muista korvata arvo dportgroup virtuaalisen Porttiryhmän nimellä.

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

tällä One-linerilla saamme listan kaikista virtuaalikoneista, joita tässä vCenter-laitteessa on, ja sitten suodatamme Where-Object cmdlet, jotta saamme vain ne VMS: t, joiden verkon nimi vastaa Porttiryhmäämme.

Getting VMs with only a specific port group
Getting VMS with only a specific port group

tällä ulostulolla voit määritellä, mitä koneita on kytketty ja määritetty kullekin verkolle.

kun sinua pyydetään paikantamaan ja analysoimaan, mitkä VMs: t ovat yhteydessä tiettyyn verkkoon VMwaressa, sinulla on nyt valtuudet tarjota Powercliraportointiratkaisu tähän kysymykseen.

käyttöjärjestelmän Versiotietojen saaminen VMS: ään Powerclillä

suurin osa VMwaren sisäisestä hallinnollisesta työstä tehdään virtuaalikonetasolla. Olet todennäköisesti saada lukemattomia pyyntöjä tehtäviä, kuten hakemalla luettelon kaikista kiintolevyn koot VMS tai saada vieras käyttöjärjestelmä versiot kaikille palvelimille muun muassa.

nämä tehtävät ovat mittakaavaltaan hankalia. PowerCLI pystyy virtaviivaistamaan näitä muutamalla tärkeällä cmdletillä, jotka lisäävät arsenaaliisi, joten katetaan ne tässä PowerCLI-opetusohjelmassa.

sinulta on saatettu kysyä jossain vaiheessa: ”kuinka monta Ubuntu-palvelinta meillä on VMware-klusterissamme?”. Olet ehkä sitten viettänyt aivan liian paljon aikaa klikkaamalla ympäri vCenter etsivät vastausta. PowerCLI voi virtaviivaistaa tätä prosessia katsomalla VM-objekteja vcenterissä ja soveltamalla joitain PowerShell-taikoja ulostulossa.

katso seuraava kirjoitus, joka kokoaa yhteen VM: n tiedot. Tämä pätkä käyttää Get-View – komentoa, johon siirrymme hieman myöhemmin, mutta toistaiseksi sinun pitäisi tietää, että se on edistyksellinen tapa hakea VMware-objektin ominaisuuksia. Tässä tapauksessa keräämme sisäkkäisiä ominaisuuksia, jotka ovat helpoimmin haettavissa tällä menetelmällä.

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

yllä oleva koodi hakee virtuaalikoneiden listaa Powerclillä Get-VM cmdlet, lajittelee mainitun listan Powershellilla Sort-Object cmdlet, ja hakee sitten joitain objektin ominaisuuksia Powerclillä Get-View cmdlet.

tämän juokseminen omassa ympäristössäni tuottaa alla olevan tuloksen. VM: n nimen voi nähdä vcenterissä, Configured OS millä tavalla VMwaren virtuaalilaitteet on asetettu tulkitsemaan vieraiden käyttöjärjestelmää, ja todellisen Running OS, joka edustaa varsinaista käyttöjärjestelmää.

Finding VMS based on various criteria
Finding VMS based on various criteria

With the VMS replikant and Scriptrunner are powered in the cluster, et voi nähdä Running OS arvoa niille. Käyttöjärjestelmän kokoaa VMware Tools-palvelu. Jos sitä ei ole saatavilla, PowerCLI ei voi vetää käyttöjärjestelmän tietoja.

CSV-Raporttien luominen Powerclillä

VMware Tools on in-guest-palvelu sekä Windows-että Linux VMs: lle, joka tarjoaa hypervisorille lisätietoja ja hallinnollisia ominaisuuksia. Yleisimmin tämä tarjoaa clean-shutdown, käyttöjärjestelmän tiedot, ja korkeamman resoluution konsolin katselu VMS.

kätevä tapa raportoida ja antaa nämä tiedot olisi liittää yllä oleva kirjoitus Export-CSV cmdlet. Export-Csv luo CSV-tiedoston, jossa on samat tiedot kuin konsolissa.

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 

kun Yllä oleva koodi on ajettu, CSV-tiedosto pitäisi pystyä avaamaan Excelillä raportin tarkistamista varten.

CSV file of VM information
CSV file of VM information

tarkastaa virtuaalisia kiintolevyjä Powerclillä

Get-Harddisk komento on toinen hyödyllinen komento tietää. Get-HardDisk cmdlet mahdollistaa VMS: ään liitettyjen virtuaalisten kiintolevyjen tietojen tarkastamisen.

esimerkiksi exchange1 VMs: ään liitetyn virtuaalisen kiintolevyn tietojen tiedusteluun voit käyttää seuraavia:

PS51> Get-VM -Name exchange1 | Get-HardDisk | Format-List
kyselytiedot vaihtoon liitetystä virtuaalisesta kiintolevystä1 vms
tiedustelutiedot vaihtoon liitetystä virtuaalisesta kiintolevystä1 vms

jotkut näistä tiedoista voivat olla tarpeettomia, kuten kapasiteetti KB vs. GB. Mutta StorageFormat (thin/thick provisioning types) tuntemisella on arvoa. Ja tietää VMDK-tiedostonimen.

esimerkiksi, jos näet yhteisen ongelman ja kaikki VM-kiintolevyt sijaitsevat samalla datastore-taltiolla, tämä tieto voi nopeuttaa vianmääritystä.

virtuaalisten Verkkosovittimien tarkastaminen Powerclillä

virtuaalikoneiden kiintolevytietojen tarkistamisen lisäksi kannattaa tarkistaa myös virtuaaliset verkkosovittimet. Jos haluat tarkistaa nämä ominaisuudet yksittäiselle VM: lle, voit käyttää Get-NetworkAdpter cmdlet.

PS51> Get-NetworkAdapter -VM myVM

vaikka olit metsästänyt aiemmin tässä portissa kaikkia samassa verkossa asuvia VMs: iä, tällä kertaa haluat nähdä vain tiettyyn VM: ään liitetyt sovittimet.

Get-NetworkAdapter
Get-NetworkAdapter

tästä on hyötyä, jos vianmääritysverkko, johon on kytketty useita verkkosovittimia. Voit nopeasti ja yhdellä silmäyksellä selvittää, onko nämä sovittimet kytketty asianmukaisiin verkkoihin.

Suorita PowerShell-skriptejä VMs: ssä Invoke-VMScript

käyttämällä Invoke-VMScript voit myös ajaa PowerShell-koodin suoraan VM: n sisällä; verkkoyhteyksiä ei tarvita. Jos olet joskus käyttänyt PowerShell Directia Hyper-V-ympäristössä, tämä on samanlainen kokemus.

sen sijaan, että luodaan PowerShell-Uusintaistelu tai käytetään Invoke-Command cmdlet verkon yli, Invoke-VMScript cmdlet voi lähettää komentoja suoraan VM: lle ilman normaalia WinRM-tai SSH-yhteyttä.

esimerkkinä, ehkä haluat suorittaa yksinkertaisen hakemistolistauksen VM: llä nimeltä exchange1. Tällöin dir C:\ arvoksi ScriptText parametrille kuten alla on esitetty.

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

tulokset ovat kuin komentoja olisi ajettu itse VM-konsolilta. Invoke-VMScript välittää tämän jälkeen kaikki lähdöt, jotka VM: ssä ajettu komento palauttaa.

Invoke-VMScript
Invoke-VMScript

vaikka tämä on perusesimerkki, voi siitä tulla niin monimutkainen kuin haluaa. Tämän PowerCLI cmdletin avulla voit määrittää erä -, PowerShell-tai Bash-tyypit ScriptText – parametrin sisällä.

Voit myös edistyä. Alla näet, miten Invoke-VMScript ajaa PowerShell-koodin erillisellä $script muuttuja ScriptText parametrisyöte. Näin voimme luoda enemmän räätälöityjä script input VM käsitellä.

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

ScriptText parametrin arvo tarvitsee merkkijonon. Tämän vuoksi $script muuttujan yhden ulomman lainausmerkit ovat välttämättömyys.

olet saattanut myös huomata GuestCredential – parametrin käytön. Tätä parametria käytetään todennettaessa VM-käyttöjärjestelmään. Tämä parametri on erityisen hyödyllinen, jos haluat suorittaa komentosarjan eri tilinä.

komentosarjasi toiminnassa pitäisi johtaa samanlaiseen tulosteeseen kuin alla.

komentosarjan suorittaminen VM: llä Invoke-VMScript
komentosarjan suorittaminen VM: llä Invoke-VMScript

tämän kirjoituksen tulos antaa meille VM: n levytiedot. Sen perusteella pitäisi tietää, että kyseessä on kauko-VM, koska VMware Virtual Disk aseman ystävällisenä nimenä.

Getting Advanced with Get-View

olet ehkä nähnyt joidenkin perus-cmdletien palauttavan ominaisuuden nimeltä ExtensionData. Löydät tämän ominaisuuden antamalla useita Powerclit cmdletejä powershelliin Get-Member cmdlet. Jos mietit, mikä se oli, nyt on tilaisuutesi ottaa selvää.

seuraava askel tässä hankkeessa on Get-View cmdlet. VMware PowerCLI hyödyntää VM: lle monia erilaisia kyselyitä, jotta Get-VMsaadaan nätti ja yksinkertainen ulostulo. Konepellin alla on kuitenkin paljon sellaista, johon pääsee vain Get-View cmdlet.

näet todennäköisesti paljon skriptejä, jotka käyttävät tätä cmdletiä. Sinun kannattaisi totutella näkemään tämä cmdlet toiminnassa. Jos haluat tutustua, käytä Get-View cmdlet saadaksesi joitakin virtuaalikoneen tietoja (exchange1 tässä esimerkissä).

näet Filter tämän cmdletin asetukset edellyttävät PowerShell-hajautustaulun käyttöä, eivät yksittäisiä merkkijonoarvoja. Ole tietoinen, kun rakennat omia ainutlaatuisia skriptejä!

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

yllä olevan komennon tuloksena on paljon sisäkkäisiä konfiguraatiotietoja ja metodivaihtoehtoja VM: ää vastaan toimimiseen tai objektin ominaisuuksien saamiseen.

Get-View
Get-View

notaatio. Täällä voit nähdä ja hakea kaikki nämä lisätiedot vieras käyttöjärjestelmä, että saatat haluta raportoida kautta PowerCLI.

PS51> $VM = Get-View -ViewType VirtualMachine -Filter @{"Name" = "myVMName"}PS51> $VM.Guest
Get-View with the Filter Parameter
Using Get-View with the Filter Parameter

ehkä haluat valita yhden ominaisuuden. Jos näin on, voit ajaa seuraavat rajata yksittäisen arvon.

PS51> $VM.Guest.GuestFullName

on monia Get-View vaihtoehtoja kaikenlaisille VMware-olioille. Voit vapaasti tutkia kaikkia näitä vaihtoehtoja ja tarkastella tätä informatiivista artikkelia Vmwarelta, joka menee syvällisesti tähän tehokkaaseen cmdletiin!

VMware Code Capture – Learn from your Clicks

Jos haluat hyödyntää Powercliä, mutta et halua rakentaa koodia kirjoittamalla, Code Capture in vCenter on täällä sinua varten. Code Capture on uusi kehittäjätyökalu, joka toimii samalla tavalla kuin Active Directory-hallintakeskus. Let ’ s cover Code Capture tässä PowerCLI opetusohjelma.

Tämä työkalu tallentaa kaikki käyttöliittymässä tehdyt toiminnot. Se sitten muuntaa kaikki nämä toiminnot ja tarjoaa sinulle PowerCLI skriptejä.

oletuksena koodin kaappaus ei ole päällä. Jos haluat ottaa sen käyttöön, avaa vCenter-laite ja siirry kohtaan Menu – > Developer Center kuten alla.

navigointi Kehittäjäkeskuksen valikkokohtaan vspheressä
navigointi Kehittäjäkeskuksen valikkokohtaan Vspheressä

kerran Kehittäjäkeskuksen välilehdessä, vaihda käyttöön koodinkaappausvaihtoehto.

Enabling code capture
Enabling code capture

kun otat Code Capturen käyttöön, näet sen jälkeen punaisen Tietuepainikkeen vCenter-otsikossasi. Kun käytössä, aina kun haluat tallentaa toiminnon ja muuttaa sen PowerCLI-ulostuloksi, sinun on tallennettava GUI-toiminto painamalla record-painiketta.

Code capture enabled indicator
Code capture enabled indicator

punainen tietuepainike ilmestyy vCenterin kirjautuneen käyttäjän osion viereen niin, että voit nyt nauhoita milloin vain.

osoittaaksesi koodin kaappauksen, käy läpi Uusi Virtual Machine creation wizard.

  1. Napsauta Record-painiketta aloittaaksesi äänityksen. Tämä aiheuttaa punaisen Record-painikkeen sykkimisen.
  2. napsauta hiiren kakkospainikkeella VMware-palvelinta ja Luo uusi virtuaalikone. Suorita tuloksena ohjatun Luo uusi virtuaalikone kaikki oletusarvot.
  3. kun virtuaalikone on luotu, klikkaa record-painiketta ja lopeta tallennus.

tuloksena oleva tuotos voi olla hieman ennakoitua monisanaisempi. Tuotos sisältää jopa kaikki toiminnot selata GUI ennen luomista VM. Kommenteissa pitäisi kuitenkin näkyä kohta, joka alkaa CreateVM_Task. Tästä koodi alkaa luoda VM: ää.

alla on osa uuden ohjatun VM-prosessin createvm_task-tulosteesta GUI: n Koodikaappauksen kautta:

Developer Center generated code
Developer Center generated code

tämä ulostulo voi olla hieman ylivoimainen, mutta se altistaa sinut suoraan virtuaalikoneiden käytettävissä olevien MÄÄRITYSVAIHTOEHTOJEN määrälle. Riippuen omista tarpeistasi, olet nyt valtuudet tehdä muutoksia omia skriptejä ja muokata sydämesi sisältöä.

koodin Kaappausapuohjelma ei rajoitu vain VM: n luomiseen. Se voi myös rakentaa koodia verkostomuutoksille, pienille VM-muutoksille tai isäntäkonfiguraation muutoksille. Kun voit tarkastella GUI-toimintojen PowerCLI-tuotosta, voit käyttää pikakuvaketta matkallasi koodina käyttöön otettuun infrastruktuuriin.

PowerCLI Tutorial Summary

tässä artikkelissa kävit paljon läpi. Hyvää työtä! Toivon, että olet ymmärtänyt voiman, jonka PowerCLI tuo VMware-infrastruktuurin hallintaan.

Powerclissa on paljon cmdletejä monenlaisille tuotekannoille, mutta täällä on vain muutama. Muista pysyä kuulolla tämän blogin lisää artikkeleita tämä mahtava työkalu!

lisätietoja

  • Powerclin lataaminen ja asentaminen
  • viralliset VMware PowerCLI docs

Vastaa

Sähköpostiosoitettasi ei julkaista.