If-Koubou

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

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

Î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 trebuie să-l ofere, 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ă modalități 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ă apăsând combinația tastaturii 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 divizată, astfel încât să puteți scana rapid în timp ce încă 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 tastaturii Win + R pentru a deschide o casetă de rulare și tastați powerhell apoi apăsați enter.

Modelele REPL ca aceasta sunt minunate pentru gratificare 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 de 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 în cutie ș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 care rulează:

Actualizare-Ajutor

Felicitări pentru executarea 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-Ajutor -Un Actualizare-Ajutor

Probabil că vă întrebați cum să interpretați tot textul, adică de ce există două informații în secțiunea de sintaxă și de ce există atât 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ă 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 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 urmărește fișierele de ajutor și aici este:

  • Parantezele paranteze în jurul unui nume de parametru și a tipului acestuia î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 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 de 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 despre fiecare parametru.

Obțineți-Ajutor -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-ajutor -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 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 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 folosi următoarele:

. \ Runme.ps1

În cele din urmă, PowerShell are ceva numit Politici de Execuție, care te oprește doar de a rula orice scenariu 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:

  • restrâns: 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: Aceasta permite ca scripturile nesemnate să fie difuzate, 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 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 totul 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 mesaj cu @taybgibb sau să lăsați un comentariu.