15Jul

Geek School: Aflați cum să automatizați Windows cu PowerShell

În această ediție a Școlii Geek, vă vom ajuta să înțelegeți puternicul limbaj de scripting PowerShell construit chiar în Windows și este extrem de util să știți într-un mediu IT.

În timp ce această serie nu este structurată în jurul unui examen, învățarea PowerShell este unul dintre cele mai importante lucruri pe care le puteți face ca administrator de rețea, deci dacă există un lucru pe care doriți să-l învățați pentru a vă ajuta în cariera IT, asta este.În plus, este foarte distractiv.

Introducere

PowerShell este cel mai puternic instrument de automatizare pe care Microsoft are de oferit, atât în ​​shell, cât și în limbajul scripting.

Rețineți că această serie se bazează pe PowerShell 3, care este livrat cu Windows 8 și Server 2012. Dacă executați Windows 7, descărcați actualizarea PowerShell 3 înainte de a continua.

Faceți cunoștință cu Consola și ISE

Există două moduri de a interacționa cu PowerShell din cutie, Consola și mediul de script-uri integrate - cunoscut și ca ISE.ISE sa îmbunătățit foarte mult de versiunea hideous care a fost livrată cu PowerShell 2 și poate fi deschisă prin apăsarea combinației de taste Win + R pentru a afișa o casetă de rulare, apoi tastând powershell_ise și apăsând enter.

După cum vedeți, ISE are o vedere împărțită, astfel încât să puteți rapid de script, în timp ce încă mai puteți vedea rezultatul în jumătatea inferioară a ISE.Jumătatea inferioară a ISE, unde sunt tipărite rezultatele scriptului dvs., poate fi folosită și ca prompt REPL - la fel ca promptul de comandă.ISE v3 a adăugat în cele din urmă suport pentru intellisense atât în ​​panoul de script, cât și în consolă interactivă.

Alternativ, puteți interacționa cu PowerShell utilizând Consola PowerShell, ceea ce voi folosi pentru majoritatea seriei. Consola PowerShell se comportă mult ca linia de comandă - pur și simplu introduceți comenzi și scutură rezultatele. Pentru a deschide Consola Windows PowerShell, apăsați din nou combinația de taste Win + R pentru a deschide o casetă de rulare și tastați powerhell apoi apăsați enter. Instrucțiunile

REPL sunt minunate pentru satisfacerea instantanee: introduceți o comandă și obțineți rezultate.În timp ce Consola nu oferă intellisense, oferă ceva numit finalizare tab care funcționează la fel - pur și simplu începeți să tastați o comandă și apăsați fila pentru a trece prin potriviri posibile.

Utilizarea sistemului de ajutor

În versiunile anterioare ale PowerShell, fișierele de ajutor au fost incluse când ați instalat Windows. Aceasta a fost o soluție bună în cea mai mare parte, dar ne-a lăsat cu o problemă semnificativă.Când echipa de ajutor PowerShell trebuia să nu mai lucreze la fișierele de ajutor, dezvoltatorii PowerShell erau încă ocupați de codificare și modificări. Aceasta a însemnat că, atunci când au fost livrate PowerShell, fișierele de ajutor au fost incorecte deoarece nu conțineau modificările mai noi aduse codului. Pentru a rezolva această problemă, PowerShell 3 nu conține fișiere de ajutor și include un sistem de ajutor actualizat. Aceasta înseamnă înainte de a face orice doriți să descărcați cele mai noi fișiere de ajutor. Puteți face acest lucru prin deschiderea unei console PowerShell și executând:

Update-Help

Felicitări pentru rularea primei comenzi PowerShell! Adevărul este că comanda Update-Help are mai multe opțiuni decât simpla rulare și pentru a le vedea, vom dori să vedem ajutorul pentru comandă.Pentru a vizualiza ajutorul pentru o comandă, pur și simplu trimiteți numele comenzii cu ajutorul căreia doriți să vă ajute la parametrul Name al comenzii Get-Help, de exemplu:

Get-Help -Name Update-Help

Probabil că vă întrebați cum să interpretațitot textul, vreau sa spun de ce exista doua informatii in sectiunea de sintaxa si de ce exista atat de multe paranteze peste tot? Primele lucruri în primul rând: motivul pentru care există două blocuri de informații în secțiunea de sintaxă se datorează faptului că reprezintă moduri diferite de a rula comanda. Acestea sunt numite din punct de vedere tehnic seturi de parametri și puteți utiliza numai una câte una( nu puteți combina parametrii din seturi diferite).În captura de ecran de mai sus puteți observa că setul de parametri de top are un parametru SourcePath în timp ce partea inferioară nu are. Motivul este că ați utiliza setul de parametri de top( cel care include SourcePath) dacă actualizați fișierele de ajutor de la altă mașină din rețeaua dvs. care le-a descărcat deja, în timp ce nu ar trebui să specificați o cale de sursă dacădoar a vrut să apucă cele mai recente fișiere de la Microsoft.

Pentru a răspunde la a doua întrebare, există o anumită sintaxă care ajută fișierele să urmeze și aici este:

  • Parantezele pătrate în jurul unui nume de parametru și al tipului său înseamnă că acesta este un parametru opțional și comanda va funcționa foarte bine fără el.
  • Parantezele pătrate în jurul numelui parametrilor înseamnă că parametrii sunt parametrii de poziție.
  • Lucrul din dreapta unui parametru din parantezele înclinate vă arată tipul de date pe care parametrul așteaptă.

În timp ce ar trebui să învățați să citiți sintaxa fișierului de ajutor, dacă vreodată nu sunteți sigur despre un anumit parametru, trebuie doar să completați -Full până la sfârșitul comenzii dvs. de ajutor și să derulați în jos la secțiunea parametri, unde vă va spune ceva mai mult desprefiecare parametru.

Get-Help -Name Update-Help -Full

Ultimul lucru pe care trebuie să-l cunoașteți despre sistemul de ajutor este modul în care îl puteți folosi pentru a descoperi comenzi, ceea ce este de fapt foarte ușor. Vedeți, PowerShell acceptă caracterele aproape oriunde, astfel încât utilizarea acestora împreună cu comanda Get-Help vă permite să descoperiți comenzi cu ușurință.De exemplu, caut comenzi care se ocupă de serviciile Windows:

Get-Help -Name * serviciu *

Sigur, toate aceste informații ar putea să nu fie la îndemână de lilieci, dar aveți încredere în mine, faceți timp și învățați cum să utilizațisistemul de ajutor. Acesta vine la îndemână tot timpul, chiar și pentru scripturi avansate care au făcut acest lucru de ani de zile.

Securitate

Aceasta nu ar fi o introducere corectă fără a menționa securitatea. Cea mai mare grija pentru echipa PowerShell este că PowerShell devine cel mai nou și cel mai mare punct de atac pentru copiii scripturilor. Au pus câteva măsuri de securitate pentru a vă asigura că nu se întâmplă acest lucru, așa că să le aruncăm o privire.

Cea mai elementară formă de protecție provine din faptul că extensia de fișier PS1( extensia folosită pentru a desemna un script PowerShell) nu este înregistrată cu o gazdă PowerShell, înregistrată efectiv la Notepad. Aceasta înseamnă că dacă faceți dublu clic pe un fișier, acesta se va deschide cu notepad-ul în loc să ruleze.

În al doilea rând, nu puteți rula scripturi din shell doar prin tastarea numelui scriptului, trebuie să specificați calea completă la script. Deci, dacă doriți să rulați un script pe unitatea dvs. C, va trebui să tastați:

C: \ runme.ps1

Sau dacă sunteți deja la rădăcina unității C, puteți folosi următoarele:

. \ Runme.ps1

În cele din urmă, PowerShell are ceva numit Politici de Execuție, care te oprește de a rula doar orice script vechi. De fapt, în mod implicit, nu puteți rula niciun script și trebuie să schimbați politica de execuție dacă doriți să vi se permită să le executați. Există 4 politici notabile de execuție:

  • Restricted : Aceasta este configurația implicită în PowerShell. Această setare înseamnă că niciun script nu poate rula, indiferent de semnătura sa. Singurul lucru care poate fi rulat în PowerShell cu această setare este o comandă individuală.
  • AllSigned: Această setare permite script-urilor să ruleze în PowerShell. Scriptul trebuie să aibă o semnătură digitală asociată de la un editor de încredere. Va exista un prompt înainte de a rula scripturile de la editori de încredere.
  • RemoteSigned : Această setare permite rularea scripturilor, dar necesită ca fișierele de script și de configurare descărcate de pe Internet să aibă o semnătură digitală asociată de la un editor de încredere. Scripturile executate de pe computerul local nu trebuie să fie semnate. Nu există solicitări înainte de a executa scriptul.
  • nerestricționat: acest lucru permite rularea scripturilor nesemnate, inclusiv toate scripturile și fișierele de configurare descărcate de pe Internet. Aceasta va include fișiere din Outlook și Messenger. Riscul aici este să rulați scripturi fără nicio semnătură sau securitate. Am reluat că nu ne-ați stabilit niciodată această setare.

Pentru a vedea ce politică actuală de execuție este setată, deschideți o consolă PowerShell și tastați:

Get-ExecutionPolicy

Pentru acest curs și pentru cele mai multe alte circumstanțe, politica RemoteSigned este cea mai bună, deci mergeți mai departe și schimbați politica utilizând următoarele.

Notă: aceasta va trebui făcută de la o consolă PowerShell elevată.

Set-ExecutionPolicy RemoteSigned

Asta e tot pentru oamenii de această dată, văd mâine pentru mai multă Distracție PowerShell.

Declinarea responsabilității

: Termenul potrivit pentru o comandă PowerShell este un cmdlet și de acum înainte vom folosi această terminologie corectă.Pur și simplu sa simțit mai potrivit să le numim comenzi pentru această introducere.

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