dacă sunteți nou în limbajul de script PowerShell și doriți să aflați cum să rulați un script PowerShell, ați ajuns la postarea corectă pe blog. Acest blog va fi un tutorial care acoperă modalități comune de a rula scripturi și câteva probleme care pot apărea.
cuprins
cerințe preliminare
acest articol va fi o prezentare generală pentru dvs. despre cum să rulați PowerShell pe computerul dvs. local. Dacă doriți să urmați de-a lungul, vă rugăm să asigurați-vă că aveți următoarele condiții prealabile în loc înainte de a începe acest articol.
- un computer Windows 10 cu privilegii de Administrator.
- Windows PowerShell versiunea 5 sau mai mare. De asemenea, puteți utiliza PowerShell V7. Acest tutorial se va concentra pe Windows PowerShell, deoarece sistemul de operare Windows îl are deja.
- orice editor de fișiere text
care se ocupă de Politica de execuție
dacă aceasta este prima dată când încercați să executați un script Windows PowerShell, este posibil să întâmpinați o problemă comună. PowerShell va returna probabil un mesaj de eroare care să ateste că un script „nu poate fi încărcat deoarece rularea scripturilor este dezactivată pe acest sistem”.
PS> .\GetServices.ps1 File C:\Temp\GetServices.ps1 cannot be loaded because running scripts is disabled on this system. For more information, see about_Execution_Policies at https:/go.microsoft.com/fwlink/?LinkID=135170. At line:1 char:1 .\GetServices.ps1 ~~~~~ CategoryInfo : SecurityError: (:) , PSSecurityException FullyQualifiedErrorId : UnauthorizedAccess
PowerShell returnează mesajul de eroare de mai sus atunci când încercați să rulați un PowerShell cu o politică de execuție setată la restricționat, semnat la distanță sau toate semnate.
restricționat
restricționat este politica implicită setată pentru computerele client Windows. Dacă utilizați PowerShell pentru prima dată, politica dvs. implicită ar fi probabil setată să restricționeze toate scripturile.
puteți executa în continuare comenzi individuale într-un terminal, dar nu într-un fișier script. Restricția include orice fișier care se termină cu .ps1xml
, .psm1
sau .ps1
.
nerestricționat
nerestricționat vă permite să rulați orice script cu toate acestea, vă avertizează înainte de execuție dacă scriptul este descărcat de pe internet. Această politică este de obicei implicită pentru orice dispozitive non-windows.
semnat la distanță
Politica semnat la distanță vă permite să rulați orice script care este fie (a) semnat digital sau (b) orice script scris pe computerul local, cu sau fără o semnătură.
dacă un script este descărcat de pe internet și nu este semnat, va trebui să deblocați fișierul. Puteți face acest lucru făcând clic dreapta pe fișier și alegând proprietăți. Sau, ai putea folosi Unblock-File
PowerShell cmdlet pentru acel fișier script special.
utilizarea unei politici semnate la distanță ar fi o opțiune ideală atunci când rulați un script descărcat de pe internet.
toate semnate
toate semnate necesită ca toate Scripturile să fie semnate digital de un editor de încredere. Aceasta include scripturile descărcate de pe internet și scrise local pe computer.
modificarea politicii de execuție PowerShell
pentru a modifica politica de execuție:
- Deschideți Windows PowerShell cu Executare ca Administrator pentru a vă asigura că aveți cea mai mare permisiune pentru a efectua modificările de politică.
2. Când este deschis, executați următoarea comandă PowerShell pentru a seta politica de execuție a computerului. Politica de execuție, așa cum este acoperită mai sus, poate fi una dintre cele trei tipuri diferite. Acest tutorial utilizează o politică de execuție utilă, dar încă sigură, a RemoteSigned.
deoarece acest tutorial presupune că ați descărcat de pe Internet fișierul script GetServices.ps1, setați Politica de execuție la RemoteSigned.
PS> Set-ExecutionPolicy RemoteSigned
Politica de execuție RemoteSigned vă obligă să semnați criptografic fiecare script PowerShell descărcat de pe Internet înainte ca PowerShell să îl ruleze pe sistemul dvs.
3. Ar trebui să vedeți o ieșire care solicită confirmarea acțiunii. Introduceți Y și apăsați enter pentru a confirma modificarea politicii.
Execution Policy Change The execution policy helps protect you from scripts that you do not trust. Changing the execution policy might expose you to the security risks described in the about_Execution_Policies help topic at https:/go.microsoft.com/fwlink/?LinkID=135170. Do you want to change the execution policy? Yes Yes to All No No to All Suspend Help (default is "N"):
în acest moment, urmați pașii următori pentru a explora diferite metode pentru a rula scriptul PowerShell pe computer.
cum se execută un Script PowerShell
pentru a demonstra rularea unui script PowerShell, aveți nevoie de fapt de un fișier script pentru a rula! Dacă nu aveți unul la îndemână, descărcați acest fișier ZIP și extrageți fișierul PS1 din interior. Veți găsi un fișier script simplu în interiorul numit GetServices. ps1.
Write-Output "Listing Computer Services"Get-Service
fiecare script PowerShell ar trebui să se încheie cu o extensie
.ps1
.
Utilizarea consolei
odată ce aveți un script gata, există câteva moduri diferite în care puteți executa un fișier script PowerShell. Una dintre cele mai comune metode este prin consola PowerShell.
pentru a face acest lucru:
- deschideți consola PowerShell așa cum se arată mai sus.
2. Navigați la locația sistemului de fișiere scriptul dvs. este localizat utilizând cmdletul PowerShell Set-Location
sau aliasul cd
. Script acest tutorial este găsit în C:\Temp director.
PS> cd C:\Temp\
3. Rulați scriptul folosind o notație dot (.
). PowerShell este un shell care caută și nume de comenzi. Pentru a face diferența între o comandă PowerShell și un script, trebuie să prefațați scriptul cu un punct. Acest punct reprezintă directorul curent.
PS> .\GetServices.ps1
cum să rulați un Script PowerShell din linia de comandă prin locația PowerShell
dacă nu puteți sau preferați să nu rulați scripturi prin consola PowerShell, puteți face acest lucru și cu linia de comandă bună (prompt de comandă).
pentru a rula scripturi prin promptul de comandă, trebuie mai întâi să porniți executabilul PowerShell (powershell.exe), cu locația PowerShell a C:\Program Files\WindowsPowerShell\powershell.exe
și apoi treceți calea scriptului ca parametru.
puteți rula scripturi cu parametri în orice context, pur și simplu specificându-le în timp ce rulați executabilul PowerShell ca
powershell.exe -Parameter 'Foo' -Parameter2 'Bar'
.
odată ce deschideți cmd.exe, puteți executa un script PowerShell ca mai jos. Acest exemplu rulează motorul și trece-l calea script de C:\Temp\GetServices.ps1.
observați mai jos că exemplul de mai jos utilizează calea de locație PowerShell pentru a rula scriptul. Va trebui să faceți acest lucru dacă folderul nu este în calea dvs. undeva.
CMD> C:\Program Files\WindowsPowerShell\powershell.exe "C:\Temp\GetServices.ps1"
locația PowerShell pentru PowerShell 7 utilizează un executabil diferit numit pwsh.exe situat de obicei în C:\Program fișiere \ PowerShell \ 7 \ pwsh.exe.
mai jos este un videoclip YouTube la îndemână care acoperă executarea unui script printr-un fișier batch pe care cmd.exe execută.
folosind PowerShell ISE
dacă creați propriile scripturi sau editați altele, probabil că veți folosi un editor de scripturi precum PowerShell ISE sau poate Visual Studio (VS) Cod. Deoarece ISE vine cu Windows, să ne concentrăm pe această metodă pentru acest tutorial.
pentru a invoca un script prin ISE:
- navigați la meniul Start, căutați PowerShell ISE și deschideți-l.
2. Faceți clic pe fișier deschis și găsiți scriptul.
3. Cu scriptul deschis, faceți clic pe butonul verde run pentru a executa scriptul. Acest buton va invoca scriptul în terminalul PowerShell încorporat din partea de jos.
ieșirea scriptului exemplu
un script PowerShell poate reveni uneori la ieșire. Acest lucru se întâmplă atunci când scriptul pe care îl executați este construit pentru a returna obiecte, care este o componentă fundamentală a PowerShell.
dacă executați scriptul GetServices.ps1 eșantion, veți vedea următoarele. Acest script rulează cmdletul Get-Service
care returnează toate serviciile instalate pe computerul Windows local.
PS> .\GetScripts.ps1Listing Computer ServicesStatus Name DisplayName------ ---- -----------Running aakore Acronis Agent Core ServiceStopped AarSvc_1b668d Agent Activation Runtime_1b668dRunning AcronisActivePr... Acronis Active Protection ServiceRunning AcronisCyberPro... Acronis Cyber Protection ServiceRunning AcrSch2Svc Acronis Scheduler2 ServiceRunning AdobeARMservice Adobe Acrobat Update ServiceRunning AdobeUpdateService AdobeUpdateServiceRunning AGMService Adobe Genuine Monitor ServiceRunning AGSService Adobe Genuine Software Integrity Se...----Truncated----
rularea unui Script PowerShell din cadrul unui Script
să presupunem că aveți două script-uri și doriți unul pentru a apela celălalt. Poate că aveți un script numit GetUser.ps1 și unul numit ResetPassword. ps1.în interiorul scriptului GetUser.ps1, doriți să executați ResetPassword.ps1 pentru a reseta o parolă de utilizator.
în interiorul scriptului de apelare (GetUser.ps1), ați adăuga o linie pentru a executa celălalt script la fel cum ați apela scriptul din linia de comandă.
puteți vedea mai jos aveți câteva opțiuni. De obicei, ar trebui să alegeți să rulați celălalt script în aceeași sesiune sau domeniu de aplicare pentru a simplifica lucrurile, cu excepția cazului în care aveți un motiv specific pentru a rula scriptul într-o altă sesiune PowerShell.
## To run the other script in a new sessionpowershell.exe .\ResetPassword.ps1## To run the other script in the same session.\ResetPassword.ps1