Homepage » hogyan kell » Geek iskolai tanulás Hogyan használjunk objektumokat a PowerShell-ben

    Geek iskolai tanulás Hogyan használjunk objektumokat a PowerShell-ben

    Az objektumok megértése a PowerShell „megszerzésének” egyik alapfogalma. Csatlakozzon hozzánk, amikor felfedezzük az objektumokat, és hogyan teszik jobban a PowerShell-t, mint bármely más héj ma.

    Ügyeljen arra, hogy olvassa el a sorozat korábbi cikkeit:

    • Ismerje meg, hogyan kell automatizálni a Windowsot a PowerShell segítségével
    • Tanulj meg a Cmdlet használatát a PowerShell-ben

    És hetekig tartsd a többi sorozatot.

    tárgyak

    Elgondolkozott már valaha, hogy mi határozza meg a PowerShell-et a hagyományos Linux-héjtól, mint a Bash, vagy akár a legördülő parancssor? A válasz nagyon egyszerű: a hagyományos kagyló kimeneti szöveg, ami megnehezíti a formázást és a szűrést. Természetesen vannak olyan eszközök, amelyek segítenek abban, hogy a munkát elvégezzék (szed és grep eszébe jut), de a nap végén, ha bármilyen nehéz szöveges értelmezést szeretne csinálni, ismernie kell a szokásos kifejezéseket, mint a hátra.

    A PowerShell kihasználja a mögöttes .Net keretrendszert, és más megközelítést alkalmaz, és objektumok helyett szöveget használ. Az objektumok csak valamit képviselnek. Ezek egy részegység és cselekvés gyűjteménye. Nézzük meg a kerékpár részeit és hogyan használhatjuk őket.

    A .Net objektumok két kisebb különbség kivételével azonosak: az „Alkatrészeket” hívják tulajdonságok és az „Utasítások” mód. Ha egy Windows szolgáltatást objektumként kívánunk képviselni, úgy dönthetünk, hogy célszerű három tulajdonságot leírni: Szolgáltatás neve, állapota és leírása. Szükségünk van továbbá a szolgáltatással való kölcsönhatásra, így előfordulhat, hogy az objektumot Start, Stop és Pause módszerrel adjuk meg.

    Az objektum tulajdonságait és módszereit a Get-Member cmdlethez továbbíthatja. A PowerShell cmdlet kimenetek nagyrészt az .Net keretrendszer alapját képező objektumok, de saját objektumokat hozhat létre, ha olyan nyelvet kell használni, mint a C # vagy a PSObject típus.

    A csővezeték

    Rengeteg Linux-kagyló van egy csővezetékkel, amely lehetővé teszi, hogy elküldje a szöveget, amelyet az egyik parancs kimenetként a csővezeték következő parancsának bemenetként küld. A PowerShell ezt a szintet a következő szintre veszi, lehetővé téve, hogy az egyik cmdlet által kibocsátott objektumokat átvegye, és átadja azokat a csővezeték következő cmdletjébe. A trükk az, hogy tudjuk, milyen típusú objektumot küld a cmdlet, ami nagyon egyszerű a Get-Member cmdlet használatakor.

    Get-Service Get-tag

    A cikk hatályán kívül eső okok miatt a tulajdonságokat és módszereket együttesen osztálytagoknak nevezik, ami megmagyarázza, hogy miért használja a Get-Member cmdletet az objektum összes módszerének és tulajdonságának listájának megkereséséhez. Azonban a Get-Member cmdlet egy másik fontos információt, az alapul szolgáló objektumtípust is visszaad. A fenti képernyőképben láthatjuk, hogy a Get-Service a következő objektumokat adja vissza:

    System.ServiceProcess.ServiceController

    Mivel a PowerShell objektumokkal és nem szöveggel foglalkozik, nem minden cmdlet összekapcsolható a csővezetékkel [1]. Ez azt jelenti, hogy meg kell találnunk egy cmdlet-et, amely a System.ServiceProcess.ServiceController objektumot fogadja el a csővezetékről.

    Get-Command -ParameterType System.ServiceProcess.ServiceController

    Figyeljük meg, hogy van egy Stop-Service nevű cmdlet; nézzük meg a segítséget.

    Get-Help -Name Stop-Service

    Úgy tűnik, hogy az InputObject paraméter egy ServiceController objektum tömböt vesz fel bemenetként. Általában, ha egy InputObject nevű paramétert lát, akkor elfogadja a csővezeték bemenetét, de csak azért, hogy megbizonyosodjunk arról, hogy a paraméter teljes segítségére van szüksége.

    Get-Help -Name Stop-Service - Teljes

    A gyanúink helyesek voltak. Tehát ezen a ponton tudjuk a következőket:

    • A Get-Service visszatér a ServiceController objektumokhoz
    • A Stop-Service rendelkezik egy InputObject nevű paraméterrel, amely egy vagy több ServiceControllert fogad be bemenetként.
    • Az InputObject paraméter elfogadja a csővezeték bemenetet.

    Ezen információk felhasználásával a következőket tehettük:

    Get-Service -Neve "Apple Mobile Device" | Stop-Service

    Ez az idő az emberek számára. Legközelebb megnézzük, hogyan lehet formázni, szűrni és összehasonlítani a csővezeték objektumait.

    Házi feladat

    • Olvassa fel az objektumvezetéket

    Ha bármilyen kérdése van, akkor tweet me @taybgibb, vagy csak hagyjon megjegyzést.