18Aug

Geek School: Učenje kako koristiti objekte u PowerShellu

Razumijevanje objekata jedan je od temeljnih pojmova za "dobivanje" PowerShell. Pridružite nam se dok istražujemo objekte i kako oni čine PowerShell bolje od bilo koje druge ljuske vani danas.

Obavezno pročitajte prethodne članke u seriji:

  • Saznajte kako automatizirati sustav Windows pomoću PowerShell
  • Učiti pomoću Cmdletsa u PowerShell

I ostati u tijeku cijele serije cijeli tjedan.

Objekti

Jeste li ikad pitali što postavlja PowerShell osim tradicionalne Linux ljuske poput Bash ili čak naslijeđene naredbeni redak? Odgovor je doista jednostavan: tradicionalni izlazni tekstovi školjki, što otežava rad stvari poput oblikovanja i filtriranja. Naravno, postoje alati koji će vam pomoći da obavite posao( sed i grep na umu), ali na kraju dana, ako želite napraviti bilo kakav teški tekst, morate poznavati redovite izraze poputleđa ruke.

PowerShell iskorištava temeljni. Net okvir i koristi drugačiji pristup, koristeći objekte umjesto teksta. Objekti su samo predstavljanje nečega. Oni su zbirka dijelova i radnji za njihovo korištenje. Pogledajmo dijelove bicikla i kako ih možemo upotrijebiti.

Objekti u. Net su mnogo isti, osim za dvije male razlike: "Dijelovi" se zovu svojstva i "Upute" se nazivaju metode .Ako želimo predstaviti servis sustava Windows kao objekt, možemo odlučiti da je prikladno opisati pomoću tri svojstva: Naziv usluge, stanje i opis. Također trebamo stupiti u interakciju s uslugom, tako da objektu možemo dati metodi Start, Stop i Pauza.

Možete vidjeti svojstva objekta i metode tako što ćete je prenijeti u cmdlet Get-Member. Predmeti koji PowerShellov cmdletovi izlaze uglavnom su ispod vrste iz. Net okvira, ali možete stvoriti vlastite objekte ako trebate koristiti jezik kao što je C # ili koristite PSObject tip.

Cjevovod

Postoji mnogo Linux granata s cjevovodom, omogućujući vam da pošaljete tekst koji jedna naredba izlazi kao ulaz u sljedeću naredbu u cjevovodima. PowerShell to preuzima na sljedeću razinu dopuštajući vam da preuzmete objekte koje jedan cmdlet izlaze i proslijedi ih kao ulaz u sljedeći cmdlet na cjevovodima. Trik je znao kakvu vrstu objekta cmdlet vraća, što je stvarno lako kada koristite Get-Member cmdlet.

Get-Service |Get-Member

Zbog razloga koji su izvan okvira ovog članka, svojstva i metode zajednički se nazivaju članovi klase, što objašnjava zašto koristite cmdlet Get-Member da biste dobili popis svih metoda i svojstava koje objekt ima. Međutim, cmdlet Get-Member također vraća još jedan važan podatak, osnovnu vrstu objekta. Na gore opisanom snimku zaslona možemo vidjeti da Get-Service vraća objekte tipa:

System. ServiceProcess. ServiceController

Budući da PowerShell bavi predmetima, a ne tekstom, ne mogu se svi cmdleti povezati pomoću cjevovoda [1].To znači da moramo pronaći cmdlet koji želi prihvatiti objekt System. ServiceProcess. ServiceController iz cjevovoda.

Get-Command -ParameterType System. ServiceProcess. ServiceController

Primijetite da postoji cmdlet pod nazivom Stop-Service;Pogledajmo pomoć za to.

Get-Help -Name Stop-Service

Izgleda da InputObject parametar zauzima niz objekata ServiceController kao ulaz. Obično, ako vidite parametar zvan InputObject, prihvaća unos iz Cijevi, ali samo da bismo pogledali punu pomoć tog parametra.

Get-Help -Name Stop-Service -Sve

Naše sumnje su bile točne. Dakle, u ovom trenutku znamo sljedeće:

  • Get-Service vraća ServiceController objekti
  • Stop-Service ima parametar pod nazivom InputObject koji prihvaća jedan ili više ServiceControllers kao ulaz.
  • Parametar InputObject prihvaća unos plinovoda.

Koristeći ove informacije mogli bismo učiniti sljedeće:

Get-Service -Name 'Apple Mobile Device' |Stop-Service

To je sve za ovo vrijeme ljudi. Sljedeći put ćemo pogledati kako možemo oblikovati, filtrirati i usporediti objekte u Cjevovodu.

Samostalni zadaci

  • Pročitajte na objektu cjevovoda

Ako imate bilo kakvih pitanja, možete me tweetirati @taybgibb, ili samo ostavite komentar.