18Aug
Pochopenie objektov je jedným zo základných pojmov "získať" PowerShell. Pripojte sa k nám, keď prehliadame objekty a ako robia PowerShell lepšie ako akékoľvek iné škvrny, ktoré sú tam dnes.
Uistite sa, že ste si prečítali predchádzajúce články v sérii:
- Naučte sa automatizovať systém Windows s PowerShellom
- Naučiť sa používať cmdlety v PowerShell
A zostať naladený na zvyšok série celý týždeň.
Objekty
Už ste niekedy premýšľali nad tým, čo nastavuje PowerShell na rozdiel od tradičného Linux shell ako Bash, alebo dokonca príkazového riadku starého? 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ť akýkoľvek druh ťažkého textu rozbor, musíte poznať regulárne výrazy, ako jezadnej časti ruky.
PowerShell využíva základný. Net framework a berie iný prístup, 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 v. Net sú oveľa rovnaké s výnimkou dvoch malých rozdielov: "Časti" sa nazývajú vlastnosti a "Pokyny" sa nazývajú 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 z 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.
Pipeline
Existuje veľa liniek Linux s potrubím, ktoré vám umožnia odoslať text, ktorý jeden príkaz vystupuje ako vstup do ďalšieho príkazu v potrubí.PowerShell prevezme túto úroveň na ďalšiu úroveň tým, že vám umožní vziať objekty, ktoré jeden výstup cmdlet a ich odovzdať ako vstup do ďalšieho cmdlet v potrubí.Tento trik vedie, aký typ objektu sa vracia, čo je naozaj jednoduché pri použití cmdletu Get-Member.
Get-Service |Get-Member
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. Nástroj Get-Member cmdlet tiež vracia ďalšiu dôležitú informáciu, typ objektu. Na horeuvedenej snímke môžeme vidieť, že Get-Service vracia objekty typu:
System. ServiceProcess. ServiceController
Keďže PowerShell sa zaoberá objektmi a nie textom, nie všetky rutiny môžu byť prepojené 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 existuje 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 vstupov 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 vracia objekty ServiceController
- Stop-Service má parameter nazývaný InputObject, ktorý prijíma jeden alebo viac ServiceControllers ako vstup.
- Parameter InputObject akceptuje vstup potrubia.
Použitím týchto informácií môžeme urobiť nasledovné:
Get-Service -me "Apple Mobile Device" |Stop-Service
To je všetko pre túto chvíľu ľudia. Následne sa pozrieme na to, ako môžeme formátovať, filtrovať a porovnávať objekty v potrubí.
Domáca úloha
- Prečítajte si na obvode objektov
Ak máte nejaké otázky, môžete ma napísať @taybgibb, alebo zanechať komentár.