Būtinai perskaitykite ankstesnius serijos straipsnius:
- Sužinokite, kaip automatizuoti "Windows" su "PowerShell"
- Mokytis naudotis "PowerShell" kompiliacijomis
Ir visada sekite visą seriją likusiai savaitę.
Objektai
Ar kada nors susimąstėte, kas nustato "PowerShell" be tradicinės "Linux" apvalkalo, kaip "Bash", ar net pasenusią komandų eilutę? Atsakymas yra labai paprastas: tradicinių kriauklių teksto išvestis, todėl sudėtinga daryti tokius dalykus kaip formatavimas ir filtravimas. Žinoma, yra įrankių, padėsiančių jums atlikti darbą (sed ir grep atėjo į galvą), bet dienos pabaigoje, jei norite atlikti kokį nors sunkų teksto analizavimą, turite žinoti reguliarias išraiškas, pvz., tavo ranka.
"PowerShell" naudoja pagrindinę ".Net" sistemą ir taiko kitokį požiūrį, naudodamas objektus, o ne tekstus. Objektai yra tik kažko reprezentacija. Jie yra dalių rinkinys ir veiksmai, skirti juos naudoti. Pažvelkime į dviračio dalis ir kaip mes galėtume juos naudoti.
Objektai. Net yra tokie patys, išskyrus du mažus skirtumus: vadinamos "Dalys" savybės ir vadinama "Instrukcija" metodai. Jei mes norėjome atstovauti "Windows" paslaugą kaip objektą, mes galime nuspręsti, kad tikslinga ją apibūdinti naudojant tris ypatybes: tarnybos pavadinimą, būseną ir aprašymą. Mes taip pat turime bendrauti su paslauga, todėl mes galime suteikti objektą "Start", "Stop" ir "Pause" metodą.
Pipeline
Yra daug "Linux" kriauklių su vamzdynu, leidžiančiu išsiųsti tekstą, kurį vienas iš komandų gauna kaip įvedimą, į kitą komandą vamzdyne. "PowerShell" perkelia tai į kitą lygmenį, leidžiantį pasirinkti vieną iš cmdlet išvestų objektų ir perduoti jas į kitą kitą dukterinės cmdlet. Apgaulė yra žinojimas, kokio tipo objektas grąžina cmdlet, o tai labai lengva, kai naudojama cmdlet "Get-Member".
Get-Service | Get-Member
System.ServiceProcess.ServiceController
Kadangi "PowerShell" yra susijęs su objektais, o ne su tekstu, ne visi cmdletai gali būti susieti kartu naudojant vamzdyną [1]. Tai reiškia, kad turime rasti cmdlet, kuris norėtų priimti dujotiekio objektą System.ServiceProcess.ServiceController.
Get-Command -ParameterType System.ServiceProcess.ServiceController
Get-Help –Name Stop-Service
Get-Help -Name Stop-Service –Full
- "Get-Service" grąžina "ServiceController" objektus
- Stop-Service turi parametrą, vadinamą InputObject, kuris priima vieną ar daugiau ServiceControllers kaip įvestį.
- Parametras InputObject priima dujotiekio įvestį.
Naudodami šią informaciją galėtume atlikti šiuos veiksmus:
Get-Service -Name ‘Apple Mobile Device’ | Stop-Service
Namų darbai
Perskaitykite "Object Pipeline"
Jei turite kokių nors klausimų, galite tweaks me @taybgibb arba tiesiog palikite komentarą.