18Aug

Școala Geek: Învățați cum să utilizați obiecte în PowerShell

click fraud protection

Înțelegerea obiectelor este unul dintre conceptele fundamentale de a "obține" PowerShell. Alăturați-vă nouă pe măsură ce explorăm obiecte și cum fac PowerShell mai bine decât orice altă colac aflată astăzi.

Asigurați-vă că citiți articolele anterioare din seria:

  • Aflați cum să automatizați Windows cu PowerShell
  • Învățați să utilizați cmdlets în PowerShell

Și stați pe toată săptămâna pentru restul seriilor.

Obiecte

V-ați întrebat vreodată ce stabilește PowerShell în afară de o cochilie tradițională Linux ca Bash, sau chiar de linia de comandă moștenire? Răspunsul este foarte simplu: textul de ieșire din coajă tradițională, ceea ce face dificilă efectuarea de lucruri precum formatarea și filtrarea. Desigur, există instrumente care să vă ajute să obțineți treaba( sed și grep veniți la minte), dar la sfârșitul zilei, dacă doriți să faceți orice fel de parsare de text greu, trebuie să știți expresii regulate, cum ar fidin spatele mâinii tale.

PowerShell profită de cadrul. Net care stau la baza și are o abordare diferită, folosind obiecte în loc de text. Obiectele sunt doar o reprezentare a ceva. Acestea sunt o colecție de părți și acțiuni pentru a le folosi. Să aruncăm o privire asupra părților unei biciclete și asupra modului în care am putea să le folosim. Obiectele

instagram viewer

din. Net sunt la fel, cu excepția a două diferențe mici: "Părțile" se numesc proprietăți și "Instrucțiunile" se numesc metode .Dacă vrem să reprezentăm un serviciu Windows ca un obiect, am putea decide că este potrivit să îl descriem folosind trei proprietăți: Nume serviciu, stare și descriere. De asemenea, trebuie să interacționăm cu serviciul, astfel încât să putem da obiect un început, o metodă Stop și o pauză.

Puteți vedea proprietățile și metodele unui obiect prin trecerea acestuia în cmdlet-ul Get-Member. Obiectele pe care o ieșire de cmdlet PowerShell sunt în mare parte tipuri de bază din cadrul. Net, dar puteți crea propriile obiecte dacă trebuie să utilizați o limbă precum C # sau să utilizați tipul PSObject.

Conducta

Există o mulțime de shell-uri Linux cu o conductă, permițându-vă să trimiteți textul pe care o comandă iese ca intrare în următoarea comandă în conductă.PowerShell duce acest lucru la nivelul următor, permițându-vă să luați obiectele pe care le trimiteți câte un cmdlet și să le transmiteți ca intrare în următorul cmdlet din conductă.Trucul este să știe ce tip de obiect se întoarce într-un cmdlet, ceea ce este foarte ușor când utilizați cmdlet-ul Get-Member.

Get-Service |Get-Member

Din motive care depășesc sfera de aplicare a acestui articol, proprietățile și metodele sunt denumite în comun membrii de clasă, ceea ce explică de ce folosiți cmdlet-ul Get-Member pentru a obține o listă a tuturor metodelor și proprietăților unui obiect. Totuși, cmdlet-ul Get-Members returnează și o altă informație importantă, tipul de obiect de bază.În captura de ecran de mai sus, putem vedea că Get-Service returnează obiecte de tipul:

System. ServiceProcess. ServiceController

Deoarece PowerShell se ocupă de obiecte și nu de text, nu toate cmdleturile pot fi conectate împreună folosind conducta [1].Asta înseamnă că trebuie să găsim un cmdlet care să încerce să accepte un obiect System. ServiceProcess. ServiceController din conductă.

Get-Command -ParameterType System. ServiceProcess. ServiceController

Observați că există un cmdlet numit Stop-Service;să aruncăm o privire la ajutorul pentru el.

Obțineți-ajutor - Stop Stop-Service

Se pare că parametrul InputObject ia o serie de obiecte ServiceController ca intrare. De obicei, dacă vedeți un parametru numit InputObject, acesta va accepta intrarea din Conductă, dar doar pentru a ne asigura că aruncăm o privire la ajutorul complet pentru acest parametru.

Obțineți-Ajutor-Stop Stop-Service -Full

Suspiciunile noastre au fost corecte. Deci, în acest moment știm următoarele:

  • Get-Service returnează obiectele ServiceController
  • Stop-Service are un parametru numit InputObject care acceptă unul sau mai mulți ServiceControllers ca intrare.
  • Parametrul InputObject acceptă introducerea conductei.

Folosind aceste informații am putea face următoarele:

Get-Service - "Apple Mobile Device" |Stop-Service

Asta e tot pentru oamenii de această dată.Data viitoare vom analiza modul în care putem formata, filtra și compara obiecte din conducte.

Temă la domiciliu

  • Citiți pe conducta obiectului

Dacă aveți întrebări, puteți să-mi trimiteți un mesaj tweet @taybgibb sau să lăsați un comentariu.