18Aug
Vienu no galvenajiem jēdzieniem "panākt" PowerShell ir objektu izpratne. Pievienojieties mums, kad mēs izpētām objektus un to, kā viņi padara PowerShell labāku nekā jebkurš cits apvalks, kas šodien tiek izmantots.
Pārliecinieties, ka esat izlasījis iepriekšējos sērijas rakstus:
- Uzziniet, kā automatizēt Windows ar PowerShell
- Mācīšanās izmantot komandrindas PowerShell
. Visu nedēļu palikt regulāri pārējām sērijām.
Objekti
Vai kādreiz esat domājuši par to, kas PowerShell iestatīts neatkarīgi no tradicionālā Linux apvalka, piemēram, Bash vai pat mantotās komandu uzvednes? Atbilde ir patiešām vienkārša: tradicionālo čaulu izvades tekstu, kas apgrūtina tādu darbību kā formatēšana un filtrēšana. Protams, ir arī rīki, kas palīdzēs jums izdarīt darbu( sed un grep nāk prātā), bet dienas beigās, ja vēlaties veikt jebkāda veida smagas teksta analīzes, jums jāzina regulāras izteiksmes, piemēram,rokas no muguras.
PowerShell izmanto pamatā esošo. Net sistēmu un izmanto atšķirīgu pieeju, lietojot objektus teksta vietā.Objekti ir tikai kāda attēla priekšstats. Tie ir daļu kopums un darbības, lai tos izmantotu. Apskatīsim velosipēda daļas un to, kā mēs tos varētu izmantot.
Objekti. Net ir vienādi, izņemot divas mazas atšķirības: "Parts" sauc īpašības un "Instrukcijas" saucas metodes .Ja mēs vēlamies pārstāvēt Windows pakalpojumu kā objektu, mēs varētu nolemt, ka ir pareizi to aprakstīt, izmantojot trīs īpašības: Pakalpojuma nosaukums, Valsts un Apraksts. Mums ir arī jāsazinās ar pakalpojumu, tāpēc mēs varam piedāvāt objektu sākuma, pieturas un pauzes metodi.
Jūs varat redzēt objekta īpašības un metodes, nododot to cmdlet Get-member. Objekti, ko PowerShell komandu izejas lielā mērā veido. Net sistēmas pamatvirzieni, bet jūs varat izveidot savus objektus, ja jums jāizmanto tāda valoda kā C # vai jāizmanto PSObject veids.
Pipeline
Ir daudz Linux čaulas ar cauruļvadu, kas ļauj nosūtīt tekstu, ko viena komanda izvada kā ievadi nākamai komandai cauruļvada. PowerShell to pāradresē uz nākamo līmeni, ļaujot jums ņemt priekšmetus, kas iegūti vienā cmdletā, un nodot tos ievadīšanai nākamajā cmdletā cauruļvadā.Triks ir zinot, kāda veida objektu atdod cmdlet, kas ir patiešām viegli, lietojot cmdlet Get-member.
Get-Service |Get-member
Iemesli, kas nav šā raksta darbības joma, īpašības un metodes kopīgi sauc par klases locekļiem, un tas izskaidro, kāpēc jūs izmantojat cmdlet Get-member, lai iegūtu sarakstu ar visām metodēm un īpašībām, kāds ir objektam. Tomēr cmdlet Get-member arī atdod vēl vienu svarīgu informāciju, kas ir pamatā esošais objekta veids. Iepriekš redzamajā ekrānuzņēmumā var redzēt, ka Get-Service atgriež šāda veida objektus:
System. ServiceProcess. ServiceController
Tā kā PowerShell nodarbojas ar objektiem un nevis tekstu, ne visi cmdletus var savienot, izmantojot cauruļvadu [1].Tas nozīmē, ka mums ir jāatrod cmdlet, kas vēlas pieņemt System. ServiceProcess. ServiceController objektu no cauruļvada.
Get-Command -ParameterType System. ServiceProcess. ServiceController
Atzīmējiet, ka ir cmdlet called Stop-Service;apskatīsim palīdzību par to.
Get-Help-Nosaukums Stop-Service
Izskatās, ka parametrs InputObject ņem vērā pakalpojuma Objekta masīvu kā ievadi. Parasti, ja jūs redzat parametru ar nosaukumu InputObject, tas pieņems ievadi no Pipeline, bet tikai, lai pārliecinātos, ka mēs apskatīsim pilnu parametru palīgu.
Get-Help-Nosaukums Stop-Service-Full
Mūsu aizdomas bija pareizi. Tātad šajā brīdī mēs zinām:
- Get-Service atgriež ServiceController objekti
- Stop-Service ir parametrs, ko sauc par InputObject, kas kā ievadi pieņēmis vienu vai vairākus ServiceControllers.
- Parametrs InputObject pieņem cauruļvada ievadi.
Izmantojot šo informāciju, mēs varam izdarīt sekojošo:
Get-Service -Name "Apple Mobile Device" |Stop-Service
Tas viss ir šim laikam ļaudīm. Nākamreiz mēs aplūkosim, kā mēs varam formatēt, filtrēt un salīdzināt objektus Pipeline.
Mājasdarbs
- Izlasīt Objektu cauruļvadu
Ja jums ir kādi jautājumi, varat man tweetēt @ tybgibb vai vienkārši atstāt komentāru.