Adam az Automator

PowerCLI által VMware egyre mindenütt felület hypervisor virtualizációs rendszergazdák ESXi támogatott hardver. A VMware PowerShell és PowerCLI segítségével történő kezelésének megtanulása az eszköztár erős kiegészítője. Ebben a PowerCLI oktatóanyagban megtanulja, hogyan kell ezt megtenni.

ebben az oktatóanyagban megtudhatja:

  • a VMware infrastruktúrához való csatlakozás alapjai a PowerCLI segítségével
  • ismerkedjen meg a VMware objektumok kezeléséhez szükséges parancsmagokkal
  • felhatalmazza magát arra, hogy felfedezze
  • a VMware további kezelését a PowerCLI segítségével

menjünk hozzá!

Tartalomjegyzék

amire szükséged van és tudnod kell

mielőtt túl messzire jutnál ebben a PowerCLI oktatóanyagban, mindig fontos biztosítani, hogy mindketten ugyanazon az oldalon vagyunk. Ehhez a cikkhez, azt fogom feltételezni, hogy:

  • alapvető PowerShell tapasztalattal rendelkezik. Nem kell, hogy egy PowerShell szakértő, bármilyen eszközzel, de bármilyen PowerShell ismerete van jól fogja szolgálni.
  • van egy VMware ESXi host vagy vCenter készüléke a csatlakozáshoz és teszteléshez
  • Windows (vagy Mac / Linux) munkaállomáson dolgozik
  • a PowerCLI már telepítve van, és csatlakoztatva van. Ha nem, nézze meg ezt a PowerCLI telepítési cikket.

a PowerCLI v 11.4.0-t fogom használni. Én fog dolgozni egy Windows 10 munkaállomás Windows PowerShell 5.1, de szívesen használja a PowerShell 6-ot, mivel ennek az oktatóanyagnak a paritása van.

gyűjtsön információkat az ESXi Gazdagépekről a PowerCLI segítségével

mielőtt belemerülne a vSphere környezetünk virtuális rétegébe, érdemes áttekinteni a fizikai hardverréteget. A VMware PowerCLI közvetlenül erre a célra biztosít egy parancsmagot, hogy részletes információkat gyűjtsön a Get-VMHostnéven.

amíg csatlakozik a vCenter-kiszolgálóhoz vagy az ESXi-gazdagéphez, futtassa a következő parancsmagot.

PS51> Get-VMHost
Get-Vmhost
Get-VMHost

mivel csatlakozom egy vCenter szerver készülékhez, amely két különálló ESXi gazdagépet kezel, néhány alapvető információt kapok a kezelt gazdagépekről. A Get-VMHost lehetővé teszi a virtualizációs gazdagépek hardveres képességeinek áttekintését. De alapértelmezés szerint a Get-VMHost nem ad vissza minden információt.

Ha a Get-VMHost parancsmagot a Format-List parancsmagra pipálja, akkor az adott gépekkel kapcsolatos összes információ konzol kimenetet kap.

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

alternatív megoldásként válogathat, és csak az egyes tulajdonságokat választhatja ki azon a vmhost objektumon, amellyel dolgozik:

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

ennek a bőbeszédűbb kimenetnek a kihasználása még nagyobb képet ad a virtualizált munkaterhelést futtató mögöttes hardverről. Néhány információ, különösen, lenne:

  • licenc érvényesítés info
  • CPU/memória összesen
  • hardver gyártó modell
  • DNS hostname

a felülvizsgálat után, ez lehet fordítani egy CSV fájlt talán a Export-CSV parancsmagot.

A virtuális gépek ellenőrzése a PowerCLI segítségével

most merüljünk el egy másik témában ebben a PowerCLI oktatóanyagban a virtuális gazdagépek áttekintésével annak áttekintése, hogy mely virtuális gépek vannak jelenleg jelen egy adott ESXi gazdagépen.

a Get-VM parancs egy praktikus parancs, amellyel áttekintheti a virtuális gép adatait.

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

a parancsmag kimenete az alábbiak szerint fog kinézni:

PS51 Get-VMHost-név Host FQDN | Get-VM
PS51> Get-VMHost-név | Get-VM

a fenti kimenet az adott gazdagépen jelenleg futó virtuális gépek teljes állapotlistáját tartalmazza. Ha úgy dönt, hogy nem ad meg egyedi gazdagépet, ahogy azt fentebb tettem, akkor minden további gazdagépről és mindegyik virtuális gépről kap egy információs táblázatot.

Ha valaha is hibaelhárítást végez, és tudnia kell egy adott gazdagépen lévő virtuális gépek számát, vagy szüksége van a VMware PowerCLI használatára az ESXi gazdagép információinak összegyűjtéséhez, használhatja ezeket a parancsmagokat. A jelentési funkció van kéznél kezd bővülni!

virtuális kapcsolók ellenőrzése a PowerCLI segítségével

azok számára, akik a vCenter-fürt virtuális hálózatainak konfigurálásával vagy adminisztrálásával vannak megbízva, a hálózati parancsmagok teljes skálája áll rendelkezésre bármilyen felhasználási esetre. Ha szeretné látni a vSphere környezetben konfigurált virtuális kapcsolókat, akkor a következőket fogja használni:

PS51> Get-VirtualSwitch

a virtuális hálózatok és virtuális kapcsolók számától függően az eredményül kapott lista meglehetősen nagy lehet. Az én esetemben, amint az alább látható, van egy DSwitch, amely egy elosztott virtuális kapcsoló.

egy vállalati vSphere implementációban, ahol sok ESXi állomás van egy fürtben, a Dswitchek egyszerűsítik a virtuális kapcsolók és portcsoportok telepítését az azonos konfigurációjú gazdagépek sokaságán. Ez megtakarítja az azonos hálózati konfigurációk kézi létrehozásának kézi munkáját az egyes gazdagépeken, és nagyszerű módja a klaszter méretezésének!

Get-VirtualSwitch
Get-VirtualSwitch

virtuális hálózathoz csatlakoztatott virtuális gépek keresése PowerCLI-vel

miközben megpróbálja szűkíteni a probléma hatókörét, elgondolkodhat azon, hogy melyik virtuális gép melyik hálózathoz csatlakozik. Ehhez használja a Get-VirtualPortGroup parancsot. Tanuljunk erről a parancsmagról ebben a PowerCLI oktatóanyagban.

a portcsoport lényegében virtuális hálózat. Az összes portcsoport megjelenítéséhez futtassa a Get-VirtualPortGroup parancsot paraméterek nélkül. Ezután látnia kell a vSphere környezetben jelen lévő összes virtuális portcsoport listáját.

Get-VirtualPortGroup
Get-VirtualPortGroup

az összes virtuális gép megkeresése a portcsoporton belül (DPortGroup az én esetemben), futtathatja az alábbi szkriptet. Feltétlenül cserélje ki az értéket DPortGroup a virtuális Portcsoport nevére.

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

ebben az egyvonalas, kapunk egy listát az összes virtuális gépek, amelyek léteznek ebben a vCenter készülék, majd szűrés a Where-Object parancsmagot, hogy csak azokat a virtuális gépeket a hálózat nevét, amely megfelel a Port csoport.

csak egy adott portcsoporttal rendelkező virtuális gépek beszerzése
csak egy adott portcsoporttal rendelkező virtuális gépek beszerzése

ezzel a kimenettel meghatározhatja, hogy milyen gépek minden hálózathoz csatlakozik és konfigurálva van.

amikor felkérik, hogy keresse meg és elemezze, mely virtuális gépek kapcsolódnak egy adott hálózathoz a VMware-ben, akkor felhatalmazást kap arra, hogy PowerCLI jelentési megoldást nyújtson erre a kérdésre.

az operációs rendszer verziójával kapcsolatos információk beszerzése a virtuális gépeken a PowerCLI segítségével

a VMware-en belüli adminisztratív munka nagy része virtuális gép szintjén történik. Valószínűleg számtalan kérést fog kapni olyan feladatokra, mint például az összes merevlemez-méret listájának lekérése a virtuális gépeken, vagy vendég operációs rendszer-verziók beszerzése az összes szerverhez, többek között.

ezek a feladatok méretarányosan nehézkesek. A PowerCLI képes ezeket ésszerűsíteni néhány fontos parancsmaggal, amelyeket hozzáadhat az arzenáljához, ezért fedjük le őket ebben a PowerCLI oktatóanyagban.

lehet, hogy valamikor megkérdezték: “hány Ubuntu szerverünk van a VMware klaszterünkben?”. Lehet, hogy akkor töltött túl sok időt kattintva körül vCenter keresi a választ. A PowerCLI egyszerűsítheti ezt a folyamatot, ha megnézi a vCenter VM objektumait, és valamilyen PowerShell varázslatot alkalmaz a kimeneten.

vessen egy pillantást a következő szkriptre, amely összehúzza a virtuális gép adatait. Ez a kódrészlet a Get-View parancsot használja, amelybe egy kicsit később belemegyünk, de egyelőre tudnia kell, hogy ez egy fejlett módszer a VMware objektum tulajdonságainak lekérésére. Ebben az esetben olyan beágyazott tulajdonságokat gyűjtünk össze, amelyek a legkönnyebben visszakereshetők ebben a módszerben.

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

a fenti kód letölti a virtuális gépek listáját a PowerCLI Get-VM parancsmagon keresztül, az említett listát a PowerShell Sort-Object parancsmaggal rendezi, majd az objektum néhány tulajdonságát a PowerCLI Get-View parancsmag.

ennek futtatása a környezetemben az alábbi eredményt eredményezi. Láthatja a virtuális gép nevét a vcenterben, a Configured OS így van beállítva a VMware virtuális hardvere a vendég operációs rendszer értelmezésére, valamint a tényleges Running OS, amely a tényleges operációs rendszert képviseli.

a virtuális gépek keresése különböző kritériumok alapján
a virtuális gépek keresése különböző kritériumok alapján

a virtuális gépek replikánsával és Scripttrunnerével a fürt ki van kapcsolva, nem fogja látni a Running OS értéket. Az operációs rendszert a VMware Tools szolgáltatás gyűjti össze. Ha nem érhető el, a PowerCLI nem tudja lekérni az operációs rendszer adatait.

CSV jelentések létrehozása A PowerCLI segítségével

A VMware Tools egy vendég szolgáltatás mind Windows, mind Linux virtuális gépek számára, amely további információkat és adminisztrációs képességeket biztosít a hypervisor számára. Leggyakrabban ez biztosítja a tiszta leállítást, az operációs rendszer információit és a virtuális gépek nagyobb felbontású konzolos megtekintését.

ezen információk jelentésének és megadásának kényelmes módja az, ha a fenti szkriptet a Export-CSV parancsmagba illesztjük. Export-Csv létrehoz egy CSV fájlt, amely ugyanazokat az információkat tartalmazza, mint a konzolon.

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 

a fenti kód futtatása után meg kell tudnia nyitni a CSV fájlt az Excel segítségével a jelentés áttekintéséhez.

a virtuális gépek információinak CSV fájlja
a virtuális gépek információinak CSV fájlja

virtuális merevlemezek ellenőrzése PowerCLI-vel

a Get-Harddisk parancs egy másik hasznos parancs, amelyet tudni kell. AGet-HardDisk parancsmag lehetővé teszi a virtuális gépekhez csatlakoztatott virtuális merevlemezek információinak ellenőrzését.

az exchange1 virtuális géphez csatlakoztatott virtuális merevlemezre vonatkozó információk lekérdezéséhez például a következőket futtathatja:

PS51> Get-VM -Name exchange1 | Get-HardDisk | Format-List
információk lekérdezése az exchange1 virtuális géphez csatlakoztatott virtuális merevlemezről
információk lekérdezése az exchange1 virtuális géphez csatlakoztatott virtuális merevlemezről

ezen információk egy része felesleges lehet, például a kapacitás KB-ban vagy GB-ban. De van érték a StorageFormat (vékony/vastag kiépítési típusok) ismeretében. És a VMDK fájlnév ismerete.

ha például egy gyakori problémát lát, és az összes virtuális gép merevlemez ugyanazon az adattár-köteten található, ez a tudás felgyorsíthatja a hibaelhárítást.

virtuális hálózati adapterek ellenőrzése a PowerCLI segítségével

a virtuális gépek merevlemez-információinak áttekintése mellett érdemes lehet ellenőrizni a virtuális hálózati adaptereket is. A Get-NetworkAdpter parancsmag segítségével ellenőrizheti ezeket a tulajdonságokat egyetlen virtuális gépen.

PS51> Get-NetworkAdapter -VM myVM

míg korábban ebben a portban vadászott az ugyanabban a hálózatban tartózkodó összes virtuális gépre, ezúttal csak az adott virtuális géphez csatlakoztatott adaptereket szeretné látni.

Get-NetworkAdapter
Get-NetworkAdapter

Ez akkor hasznos, ha több hálózati adapterrel rendelkező virtuális gépeket hibaelhárítunk. Gyorsan és egy pillanat alatt megállapíthatja, hogy ezek az adapterek a megfelelő hálózatokhoz vannak-e csatlakoztatva.

PowerShell szkriptek futtatása virtuális gépekben az Invoke-VMScript

a Invoke-VMScript használatával a PowerShell kódot közvetlenül a virtuális gép belsejében is futtathatja; nincs szükség hálózati kapcsolatra. Ha valaha is használta a PowerShell Direct-et Hyper-V környezetben, ez hasonló élmény lesz.

ahelyett, hogy PowerShell távoli munkamenetet hozna létre, vagy aInvoke-Command parancsmagot használná a hálózaton keresztül, aInvoke-VMScript parancsmag parancsokat küldhet közvetlenül a virtuális gépnek normál WinRM vagy SSH kapcsolat nélkül.

példaként talán egy egyszerű könyvtárlistát szeretne végrehajtani egy exchange1 nevű virtuális gépen. Ehhez adja meg a dir C:\értéket a ScriptText paraméter értékeként az alábbiak szerint.

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

Az eredmények olyanok, mintha maga a VM konzol futtatta volna a parancsokat. Invoke-VMScript ezután továbbítja az összes kimenetet, amelyet a virtuális gépen futtattak.

Invoke-VMScript
Invoke-VMScript

bár ez egy alapvető példa, akkor kap olyan bonyolult, mint szeretné. Ez a PowerCLI parancsmag lehetővé teszi kötegelt, PowerShell vagy Bash típusok megadását a ScriptText paraméteren belül.

akkor kap fejlettebb is. Az alábbiakban láthatja, hogyan kell használni aInvoke-VMScript A PowerShell kód futtatásához külön$script változót aScriptText paraméter bemenethez. Ez lehetővé teszi számunkra, hogy testre szabottabb szkriptbevitelt hozzunk létre a virtuális gép feldolgozásához.

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

a ScriptText paraméterértéknek karakterláncra van szüksége. Ez az oka annak, hogy a$script változónak szükségszerűsége az egy-külső idézőjelek.

lehet, hogy észrevette a GuestCredential paraméter használatát is. Ez a paraméter a virtuális gép operációs rendszerbe történő hitelesítésre szolgál. Ez a paraméter különösen akkor hasznos, ha a szkriptet más fiókként szeretné futtatni.

a parancsfájl működése során az alábbihoz hasonló kimenetet kell eredményeznie.

parancsfájl futtatása virtuális gépen Invoke-VMScript
parancsfájl futtatása virtuális gépen Invoke-VMScript

az eredmény ez a szkript biztosítja számunkra a virtuális gép lemezinformációit. Ennek alapján tudnia kell, hogy ez egy távoli virtuális gép, mivel a VMware Virtual Disk a meghajtó barátságos neve.

Haladó a Get-View

lehet, hogy néhány alapvető parancsmag visszaadja a ExtensionData nevű tulajdonságot. Ezt a tulajdonságot úgy találhatja meg, hogy sok PowerCLI parancsmagot a PowerShell Get-Member parancsmaghoz vezet. Ha kíváncsi volt, mi volt az, most itt az alkalom, hogy megtudja.

a vállalkozás következő lépése a Get-View parancsmag megértése. A VMware PowerCLI számos különböző lekérdezést használ a virtuális géphez, hogy a Get-VMszép és egyszerű kimenetét biztosítsa. De van egy csomó a motorháztető alatt, amely csak a Get-View parancsmag használatával érhető el.

valószínűleg sok szkriptet fog látni ezzel a parancsmaggal. Jó lenne, ha egy kis időt töltene azzal, hogy megszokja, hogy ezt a parancsmagot működés közben látja. A Get-View parancsmag segítségével megismerheti a virtuális gép adatait (ebben a példában az exchange1).

a parancsmag Filter opciói PowerShell hashtable használatát igénylik, nem pedig egyedi karakterláncértékeket. Legyen tisztában az épület saját egyedi szkriptek!

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

a fenti parancs eredménye sok beágyazott konfigurációs információ és Metódus opció a virtuális gép elleni műveletekhez vagy az objektum tulajdonságainak megszerzéséhez.

Get-View
Get-View

Ha ugyanazt a szkriptet használja, és elküldi a kimenetet egy változónak, akkor ezeket a beágyazott opciókat A dot segítségével ellenőrizheti jelölés. Itt láthatja és lekérheti a vendég operációs rendszer összes további információját, amelyet esetleg a PowerCLI-n keresztül szeretne jelenteni.

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

a Get-View használata a Szűrőparaméterrel
a Get-View használata a Szűrőparaméterrel

talán egyetlen tulajdonságot szeretne kiválasztani. Ha igen, akkor a következőket futtathatja az egyedi érték szűkítéséhez.

PS51> $VM.Guest.GuestFullName

sok Get-View opciók minden típusú VMware objektumhoz. Nyugodtan fedezze fel ezeket a lehetőségeket, és tekintse át ezt az informatív cikket a VMware-től, amely mélyrehatóan foglalkozik ezzel az erőteljes parancsmaggal!

VMware Code Capture – tanuljon a kattintásokból

Ha szeretné kihasználni a PowerCLI előnyeit, de inkább nem építene kódot gépeléssel, a Code Capture in vCenter itt van az Ön számára. A Code Capture egy új fejlesztői eszköz, amely hasonlóan működik, mint az Active Directory felügyeleti központ. Fedezzük le a kód rögzítését ebben a PowerCLI oktatóanyagban.

Ez az eszköz rögzíti a GUI-n belüli összes műveletet. Ezután átalakítja ezeket a műveleteket, és biztosítja a PowerCLI szkripteket.

alapértelmezés szerint a Kódrögzítés nincs bekapcsolva. A bekapcsoláshoz nyissa meg a vCenter készüléket, és keresse meg a Menü –> fejlesztői központot az alábbiak szerint.

navigálás A fejlesztői központ menüpontjába a vSphere-ben
navigálás A fejlesztői központ menüpontjába a vSphere-ben

egyszer a fejlesztői központ fülön kapcsolja be az Enable-t kódrögzítési lehetőség.

a kódrögzítés engedélyezése
a kódrögzítés engedélyezése

a Kódrögzítés engedélyezésekor egy piros Felvétel gomb jelenik meg a vCenter fejlécében. Ha engedélyezve van, amikor azt szeretné, hogy egy műveletet rögzítsen és PowerCLI kimenetté alakítson, akkor a Felvétel gomb megnyomásával rögzítenie kell a GUI tevékenységet.

Code capture enabled indicator
Code capture enabled indicator

a piros Felvétel gomb jelenik meg a vCenter bejelentkezett felhasználói része mellett, így most már rekord bármikor.

a Kódrögzítés bemutatásához menjen át az új virtuális gép létrehozása varázslón.

  1. a felvétel megkezdéséhez kattintson a Felvétel gombra. Ez azt eredményezi, hogy a piros Felvétel gomb pulzálni kezd.
  2. kattintson a jobb gombbal a VMware gazdagépére, és hozzon létre egy új virtuális Gépet. Futtassa át a kapott varázslót, hozzon létre egy új virtuális Gépet az összes alapértelmezett értékkel.
  3. a virtuális gép létrehozása után kattintson a Felvétel gombra, és állítsa le a felvételt.

a kapott kimenet kissé bőbeszédűbb lehet a vártnál. A kimenet még a grafikus felhasználói felület böngészésének összes műveletét is tartalmazza a virtuális gép létrehozása előtt. De látnia kell egy részt, amelyet a megjegyzésekben jelölnek, kezdve CreateVM_Task. Ez az, ahol a kód elkezd létrehozni egy virtuális gépet.

Az alábbiakban egy része a CREATEVM_TASK kimenet az új VM varázsló folyamat a GUI keresztül Code Capture:

Developer Center generált kód
Developer Center generált kód

Ez a kimenet kissé elsöprő lehet, de közvetlenül kiteszi a virtuális gépek számára elérhető konfigurációs lehetőségek számát. Attól függően, hogy a saját igényeinek, akkor most fel van hatalmazva, hogy kiigazításokat a saját szkripteket, és testre a szíved tartalmát.

A Code Capture segédprogram nem korlátozódik csak a virtuális gép létrehozására. Azt is építeni kódot hálózati változások, kis VM módosítások, vagy host konfigurációs változások. Azáltal, hogy áttekintheti a GUI műveletek PowerCLI kimenetét, parancsikont készíthet a kódként telepített infrastruktúra felé vezető úton.

PowerCLI bemutató összefoglaló

ebben a cikkben, akkor borított egy csomó földet. Szép munka! Remélem, hogy felismerte a PowerCLI erejét a VMware infrastruktúra kezelésében.

a PowerCLI-ben sok parancsmag található a termékbázisok széles skálájához, de itt csak néhányat fedtünk le. Ügyeljen arra, hogy stay tuned, hogy ezt a blogot további cikkeket erről a fantasztikus eszköz!

további olvasmányok

  • hogyan kell letölteni és telepíteni PowerCLI
  • hivatalos VMware PowerCLI docs

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.