"Geek" mokykla: mokymasis naudoti objektus "PowerShell"

Turinys:

"Geek" mokykla: mokymasis naudoti objektus "PowerShell"
"Geek" mokykla: mokymasis naudoti objektus "PowerShell"

Video: "Geek" mokykla: mokymasis naudoti objektus "PowerShell"

Video:
Video: Windows 10 - How to check RAM/Memory - System Specs - Free & Easy 2024, Balandis
Anonim
Objektų supratimas yra viena iš pagrindinių sąvokų "gauti" "PowerShell". Prisijunkite prie mūsų, kai mes ištirti objektus ir kaip jie PowerShell padaryti geriau nei bet kuris kitas apvalkalas ten šiandien.
Objektų supratimas yra viena iš pagrindinių sąvokų "gauti" "PowerShell". Prisijunkite prie mūsų, kai mes ištirti objektus ir kaip jie PowerShell padaryti geriau nei bet kuris kitas apvalkalas ten šiandien.

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.

Image
Image

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ą.

Jūs galite pamatyti objekto savybes ir metodus, perduodant jį "cmdlet" "Get-member". Objektai, kuriuos "PowerShell" cmdlet išveda, iš esmės yra ".Net" sistemos tipai, tačiau jūs galite kurti savo objektus, jei reikia naudoti tokią kalbą kaip C # arba naudoti PSObject tipą.
Jūs galite pamatyti objekto savybes ir metodus, perduodant jį "cmdlet" "Get-member". Objektai, kuriuos "PowerShell" cmdlet išveda, iš esmės yra ".Net" sistemos tipai, tačiau jūs galite kurti savo objektus, jei reikia naudoti tokią kalbą kaip C # arba naudoti PSObject tipą.

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

Dėl priežasčių, nepatenkančių į šio straipsnio taikymo sritį, savybės ir metodai yra bendrai vadinami klasių nariais, todėl paaiškėja, kodėl naudojate cmdlet "Get-member", kad gautumėte sąrašą visų metodų ir savybių, kurių turi objektas. Tačiau "cmdlet" "Get-member" taip pat grąžina kitą svarbią informaciją, pagrindinį objekto tipą. Viršuje esančio ekrano vaizdas mato, kad "Get-Service" grąžina tokius tipo objektus:
Dėl priežasčių, nepatenkančių į šio straipsnio taikymo sritį, savybės ir metodai yra bendrai vadinami klasių nariais, todėl paaiškėja, kodėl naudojate cmdlet "Get-member", kad gautumėte sąrašą visų metodų ir savybių, kurių turi objektas. Tačiau "cmdlet" "Get-member" taip pat grąžina kitą svarbią informaciją, pagrindinį objekto tipą. Viršuje esančio ekrano vaizdas mato, kad "Get-Service" grąžina tokius tipo objektus:

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

Atkreipkite dėmesį, kad yra cmdlet "Stop-Service"; pažiūrėkime už pagalbą.
Atkreipkite dėmesį, kad yra cmdlet "Stop-Service"; pažiūrėkime už pagalbą.

Get-Help –Name Stop-Service

Atrodo, kad parametras "InputObject" priima "ServiceController" objektų masyvą kaip įvestį. Paprastai, jei pamatysite parametrą, vadinamą InputObject, jis priims "Pipeline" įvestį, bet tik norime įsitikinti, kad parodyta visa parama.
Atrodo, kad parametras "InputObject" priima "ServiceController" objektų masyvą kaip įvestį. Paprastai, jei pamatysite parametrą, vadinamą InputObject, jis priims "Pipeline" įvestį, bet tik norime įsitikinti, kad parodyta visa parama.

Get-Help -Name Stop-Service –Full

Mūsų įtarimai buvo teisingi. Taigi šiuo metu mes žinome:
Mūsų įtarimai buvo teisingi. Taigi šiuo metu mes žinome:
  • "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

Tai viskas šiai dienai žmonėms. Kitą kartą mes pažvelgsime į tai, kaip mes galime formuoti, filtruoti ir palyginti objektus Pipeline.
Tai viskas šiai dienai žmonėms. Kitą kartą mes pažvelgsime į tai, kaip mes galime formuoti, filtruoti ir palyginti objektus Pipeline.

Namų darbai

Perskaitykite "Object Pipeline"

Jei turite kokių nors klausimų, galite tweaks me @taybgibb arba tiesiog palikite komentarą.

Rekomenduojamas: