Școala Geek 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ă cunoașteț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 dvs. IT, asta este. În plus, este foarte distractiv.
Introducere
PowerShell este cel mai puternic instrument de automatizare pe care Microsoft are de oferit, și atât un shell, cât și un limbaj de scripting.
Rețineți că această serie se bazează pe PowerShell 3, care se livrează 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ă modalități de a interacționa cu PowerShell din cutie, Consola și mediul de scripting integrat - 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, 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 scapă rezultatele. Pentru a deschide Consola Windows PowerShell, apăsați din nou combinația tastaturii Win + R pentru a deschide o casetă de rulare și tastați butonul de comandă, apoi apăsați enter.
REPL prompturile de acest gen 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ă pentru 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 de modificări. Aceasta a însemnat că, atunci când a fost livrat 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 vine fără fișiere de ajutor în cutie și include un sistem de ajutor actualizat. Aceasta înseamnă că înainte de a face orice veți dori să descărcați cele mai recente fișiere de ajutor. Puteți face acest lucru prin deschiderea unei console PowerShell și care rulează:
Actualizare-Ajutor
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:
Obțineți-Help -Name Update-Help
Probabil că vă întrebați cum să interpretați tot textul, adică de ce există două mulțimi de informații în secțiunea de sintaxă și de ce există atât de multe paranteze peste tot? Primele lucruri mai întâi: motivul pentru care există două blocuri de informații în secțiunea de sintaxă este că acestea reprezintă moduri diferite de a rula comanda. Acestea sunt numite din punct de vedere tehnic seturi de parametri și puteți utiliza numai unul câte unul (nu puteți amesteca 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 de jos nu are. Motivul este că ați utiliza setul de parametri de top (cel care include SourcePath) dacă actualizați fișierele de asistență de la o 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 paranteze în jurul unui nume de parametru și al tipului acestuia înseamnă că acesta este un parametru opțional, iar comanda va funcționa bine fără el.
- Parantezele pătrate în jurul numelui parametrilor înseamnă că parametrii sunt parametri poziționali.
- 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, doar adăugați - Completați la sfârșitul comenzii dvs. de ajutor și derulați în jos la secțiunea parametri, unde vă va spune ceva mai mult despre fiecare parametru.
Obțineți-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:
Obțineți-Help -Name * serviciu *
Sigur, toate aceste informații ar putea să nu fie la îndemână de liliac, dar aveți încredere în mine, faceți timp și învățați cum să utilizați sistemul 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 ca PowerShell devine cel mai nou si mai bun 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 vine din faptul că extensia de fișier PS1 (extensia folosită pentru a desemna un script PowerShell) nu este înregistrată cu o gazdă PowerShell, înregistrată de fapt la Notepad. Asta înseamnă că dacă faceți dublu clic pe un fișier se va deschide cu notepad-ul în loc să fie difuzat.
În al doilea rând, nu puteți rula scripturile 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 utiliza următoarele:
.\ runme.ps1
În cele din urmă, PowerShell are ceva numit Politici de Execuție, care te oprește de a rula 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ă aveți permisiunea de a le rula. Există 4 politici de execuție notabile:
- restrâns: Aceasta este configurația implicită în PowerShell. Această setare înseamnă că niciun script nu poate rula, indiferent de semnătura lui. 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 rulate de pe computerul local nu trebuie să fie semnate. Nu există solicitări înainte de a rula scriptul.
- nerestricţionat: Aceasta 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 făcut niciodată acest set.
Pentru a vedea care este politica actuală de executare, 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.
Disclaimer: 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.