Geek School: Učenie ako používať objekty v PowerShell

Obsah:

Geek School: Učenie ako používať objekty v PowerShell
Geek School: Učenie ako používať objekty v PowerShell

Video: Geek School: Učenie ako používať objekty v PowerShell

Video: Geek School: Učenie ako používať objekty v PowerShell
Video: Luxury sightseeing train running through the nature-rich Japanese countryside - YouTube 2024, Marec
Anonim
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á škrupina, ktorá je tam dnes.
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á škrupina, 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 série.

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 rozboru textu, musíte poznať regulárne výrazy, ako je zadnej časti ruky.

PowerShell využíva základný.Net framework a berie iný prístup, používajúc 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ť.

Image
Image

Objekty v.Net sú oveľa rovnaké, s výnimkou dvoch malých rozdielov: nazývajú sa "č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 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.
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.

Potrubia

Existuje veľa liniek Linux s potrubím, čo vám umožňuje 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 cmdlet výstupy a odovzdať ich 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ú rámec tohto článku, sa vlastnosti a metódy spoločne nazývajú členovia triedy, čo vysvetľuje, prečo používate rutinu Get-Member na získanie zoznamu všetkých metód a vlastností, ktoré má daný objekt. Nástroj Get-Member cmdlet tiež vracia ďalšiu dôležitú informáciu, typ objektu. Na horeuvedenej snímke môžeme vidieť, že služba Get-Service vracia objekty typu:
Z dôvodov, ktoré presahujú rámec tohto článku, sa vlastnosti a metódy spoločne nazývajú členovia triedy, čo vysvetľuje, prečo používate rutinu Get-Member na získanie zoznamu všetkých metód a vlastností, ktoré má daný objekt. Nástroj Get-Member cmdlet tiež vracia ďalšiu dôležitú informáciu, 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.
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 vstupu 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.
Zdá sa, že parameter InputObject zaberá pole vstupu 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é:
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 -Name ‘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í.
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 článok na potrubí objektu

Ak máte nejaké otázky, môžete ma napísať @taybgibb, alebo len zanechať komentár.

Odporúča: