Geek School Učenie, ako používať objekty v PowerShell
Pochopenie objektov je jedným zo základných pojmov na "získanie" PowerShell. Pripojte sa k nám, keď prehliadame objekty a ako robia PowerShell lepšie ako akýkoľvek iný shell, ktorý je tam dnes.
Nezabudnite si prečítať predchádzajúce články v sérii:
- Naučte sa ako automatizovať systém Windows pomocou nástroja PowerShell
- Naučiť sa používať Cmdlets v PowerShell
A zostávajte celú týždeň na zvyšok seriálu.
objektov
Už ste niekedy premýšľali nad tým, čo nastavuje PowerShell na rozdiel od tradičnej linuxovej shellovej štruktúry, ako je Bash, alebo dokonca aj príkazového riadku staršej verzie? Odpoveď je naozaj jednoduchá: výstupný text tradičných škrupín, čo sťažuje robiť veci ako formátovanie a filtrovanie. Samozrejme, existujú nástroje, ktoré vám pomôžu vykonať túto prácu (sed a grep vám prídu na myseľ), ale na konci dňa, ak chcete robiť nejaký druh ťažkého textu parsovania, musíte poznať regulárne výrazy, ako je zadnej časti ruky.
PowerShell využíva základný .Net rámec a používa iný prístup, pričom používa namiesto textu objektov. Objekty sú len reprezentáciou niečoho. Sú to zbierka častí a akcií na ich použitie. Poďme sa pozrieť na časti bicykla a ako ich môžeme použiť.
Objekty vo formáte .Net sú v podstate rovnaké, s výnimkou dvoch malých rozdielov: nazývame "časti" vlastnosti a "pokyny" metódy. Ak by sme chceli reprezentovať službu Windows ako objekt, mohli by sme sa rozhodnúť, že je vhodné ho opísať pomocou troch vlastností: Názov služby, stav a popis. Musíme tiež komunikovať so službou, takže môžeme objekt dať začiatok, stop a pauzu.
Vlastnosti a metódy objektu môžete zobraziť tak, že ho odošlete na cmdlet Get-Member. Predmety, v ktorých sú výstupy programu PowerShell cmdlet z veľkej časti základnými typmi z .Net framework, ale môžete vytvoriť vlastné objekty, ak potrebujete používať jazyk ako C # alebo použiť typ PSObject.
Potrubia
Existuje veľa liniek Linux s potrubím, ktoré vám umožnia poslať text, ktorý jeden príkaz vysiela ako vstup do ďalšieho príkazu v potrubí. PowerShell to prevezme na ďalšiu úroveň tým, že vám umožní vziať objekty, ktoré jeden cmdlet výstupy a odovzdať ich ako vstup do ďalšieho cmdlet v potrubí. Tento trik vedie, aký typ objektu sa vráti, čo je veľmi jednoduché pri použití rutiny Get-Member.
Get-Service | Get-Člen
Z dôvodov, ktoré presahujú rozsah tohto článku, sa vlastnosti a metódy spoločne nazývajú členovia triedy, čo vysvetľuje, prečo používate skript Get-Member na získanie zoznamu všetkých metód a vlastností objektu. Riadok Get-Member tiež vráti ďalšiu dôležitú informáciu, základný typ objektu. Na horeuvedenej snímke môžeme vidieť, že služba Get-Service vracia objekty typu:
System.ServiceProcess.ServiceController
Keďže PowerShell sa zaoberá objektmi a nie textom, nie všetky rutiny môžu byť spojené pomocou potrubia [1]. To znamená, že potrebujeme nájsť cmdlet, ktorý chce prijať objekt System.ServiceProcess.ServiceController z potrubia.
Get-Command -ParameterType System.ServiceProcess.ServiceController
Všimnite si, že je tam cmdlet s názvom Stop-Service; poďme sa pozrieť na pomoc za to.
Get-Help -Name Stop-Service
Zdá sa, že parameter InputObject zaberá pole vstupných objektov ServiceController. Zvyčajne, ak uvidíte parameter nazývaný InputObject, bude akceptovať vstup z Pipeline, ale len aby sme sa uistili, že sa pozrieme na celú pomoc pre daný parameter.
Get-Help -Name Stop-Service -Full
Naše podozrenia boli správne. Takže v tomto bode vieme nasledovné:
- Get-Service vráti objekty ServiceController
- Služba Stop-Service má parameter nazývaný InputObject, ktorý prijíma jeden alebo viac ServiceControllers ako vstup.
- Parameter InputObject akceptuje vstup potrubia.
Pomocou týchto informácií môžeme urobiť nasledovné:
Get-Service - "Apple Mobile Device" Stop-Service
To je všetko pre tento čas ľudí. Nasledujúci čas sa pozrieme na to, ako môžeme formátovať, filtrovať a porovnávať objekty v potrubí.
Domáca úloha
- Prečítajte si článok na potrubí objektu
Ak máte akékoľvek otázky, môžete ma napísať @taybgibb, alebo zanechať komentár.