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 serije:
I ostanite u tijeku cijele serije cijeli tjedan.
Jeste li ikad pitali što postavlja PowerShell osim tradicionalne Linux ljuske poput Bash, pa čak i 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 koju vrstu teškog pisanja teksta, trebate znati redovite izraze poput leđ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 Netu su mnogo isti osim za dvije male razlike: nazivaju se "Dijelovi" nekretnine i nazivaju se "upute" 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.
Dostupne su mnoge Linux ljuske 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-članica
Iz 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 gornjoj snimci zaslona možemo vidjeti da Get-Service vraća objekte tipa:
System.ServiceProcess.ServiceController
Budući da PowerShell bavi predmetima, a ne tekstom, svi cmdleti ne mogu biti povezani zajedno 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
Primjetite 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 -Full
Naše su sumnje bile ispravne. Dakle, u ovom trenutku znamo sljedeće:
Pomoću tih informacija možemo učiniti sljedeće:
Dobiti-servis - "Apple mobilni uređaj" Stop-usluge
To je sve za ovo vrijeme ljudi. Sljedeći put ćemo pogledati kako možemo oblikovati, filtrirati i usporediti objekte u Cjevovodu.
Ako imate bilo kakvih pitanja, možete me tweetirati @taybgibb ili ostavite komentar.