Acasă
» WINDOWS
»
Cum se remediază eroarea „Rularea scripturilor este dezactivată pe acest sistem” în PowerShell pe Windows 10
Cum se remediază eroarea „Rularea scripturilor este dezactivată pe acest sistem” în PowerShell pe Windows 10
Pentru a remedia eroarea „executarea scripturilor este dezactivată pe acest sistem” pe un PC personal cu Windows 10, setați PowerShell la RemoteSigned pentru contul dvs. de utilizator , apoi rulați scriptul din folderul său. Deschideți Windows PowerShell și introduceți:
Confirmați modificarea când vi se solicită. Aceasta se aplică numai contului dvs. Windows și nu necesită o fereastră de administrator. Dacă trebuie să rulați un script de încredere o singură dată, utilizați opțiunea de sesiune temporară de mai jos.
1. Verificați ce politică de execuție blochează scriptul
În aceeași aplicație PowerShell unde ați văzut eroarea, executați:
Get-ExecutionPolicy -List
Comanda listează politicile pentru Politica de grup, sesiunea curentă, contul dvs. și computer. Restrictedpermite comenzi individuale, dar blochează fișierele script; este politica implicită pentru computerele client Windows atunci când nu este setată nicio altă politică. PowerShell utilizează cea mai specifică setare aplicabilă, setările Politicii de grup având prioritate.
Verificați domeniile de aplicare listate înainte de a modifica o politică.
Politica de execuție este o caracteristică de siguranță care ajută la prevenirea rulării neintenționate a scripturilor, dar Microsoft o descrie ca o apărare în profunzime, mai degrabă decât ca o limită de securitate. Un script poate fi totuși dăunător, așadar examinați codul său și verificați sursa înainte de a-i permite rularea. Consultați ghidul politicii de execuție pentru Windows PowerShell 5.1 de la Microsoft .
2. Permiteți scripturi locale pentru contul dvs.
Pentru scripturile pe care le creați sau în care aveți încredere, setați politica la nivel de utilizator la RemoteSigned:
Când PowerShell vă întreabă dacă doriți să modificați politica de execuție, tastați Yși apăsați Enter dacă intenționați să continuați. Modificarea are efect imediat; nu este nevoie să reporniți PowerShell. CurrentUserAceasta afectează doar contul dvs. și evită modificarea LocalMachinedomeniului de aplicare implicit, care se aplică tuturor utilizatorilor și necesită o fereastră PowerShell cu privilegii ridicate.
Confirmați modificarea RemoteSigned doar pentru cont atunci când vi se solicită.
RemoteSignedpermite scripturi locale care nu sunt marcate ca descărcări de pe internet. Necesită ca scripturile descărcate să aibă o semnătură digitală de încredere, cu excepția cazului în care deblocați în mod deliberat un anumit fișier. Evitați modificarea politicii la Unrestrictedsau Bypassca o soluție generală: aceste setări permit rularea mai multor scripturi cu mai puține avertismente.
3. Rulați scriptul din folderul său
Mutați fișierul în folderul care conține .ps1fișierul, apoi includeți ./(sau în stilul Windows .\) înaintea numelui său. De exemplu:
Set-Location 'C:\Scripts'
.\MyScript.ps1
PowerShell nu rulează automat un fișier din directorul curent atunci când tastați doar numele acestuia. Dacă calea conține spații sau îl rulați dintr-un alt folder, utilizați operatorul de apel și citați calea completă:
& 'C:\Scripts\My Script.ps1'
Verificați politica efectivă, apoi apelați scriptul prin calea sa.
4. Dacă un script descărcat este încă blocat
Cu RemoteSigned, un script nesemnat descărcat de pe internet poate rămâne blocat chiar și după ce modificați politica. Mai întâi verificați scriptul și verificați dacă aveți încredere în sursa sa. Dacă da, deblocați doar fișierul respectiv:
Folosește calea corectă dacă fișierul se află în altă parte. Unblock-Fileelimină marcajul de descărcare de pe internet al fișierului; nu inspectează codul și nu face ca un script nesigur să fie sigur. Microsoft documentează acest comportament în referința Windows PowerShell 5.1 Unblock-File .
Deblocați doar un fișier revizuit a cărui sursă aveți încredere.
Utilizați o politică temporară pentru o sesiune
Dacă nu doriți o setare persistentă per utilizator, închideți fereastra PowerShell curentă și deschideți una nouă. Apoi executați acest cod înainte de script:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
Domeniul Processde aplicare se aplică numai acelei sesiuni PowerShell și proceselor sale secundare; închiderea ferestrei o șterge. Aceasta respectă în continuare RemoteSignedregulile, așadar un fișier nesemnat descărcat poate necesita revizuire și deblocare individuală. Referința Set-ExecutionPolicy explică domeniile de aplicare și valorile politicilor disponibile.
Dacă eroarea persistă
Executați Get-ExecutionPolicypentru a vedea politica efectivă și Get-ExecutionPolicy -Listpentru a verifica ce o controlează. Dacă MachinePolicysau UserPolicyeste setat, politica de grup a unei organizații controlează execuția scriptului. Nu încercați să o ignorați; contactați administratorul.
Asigurați-vă că ați modificat politica în aceeași ediție PowerShell pe care o utilizați pentru a rula scriptul. Windows PowerShell 5.1 ( powershell.exe) și PowerShell 7 ( pwsh.exe) stochează setările politicii separat.
Dacă doriți să eliminați ulterior modificarea per utilizator, executați comanda Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope CurrentUser. Aceasta șterge doar CurrentUsersetarea; politica efectivă revine la un alt domeniu de aplicare configurat sau, dacă nu există niciunul în Windows 10, la comanda Restricted.
Pentru majoritatea sistemelor personale Windows 10, RemoteSignedacest lucru CurrentUsereste suficient pentru a rula scripturi locale, păstrând în același timp o verificare pentru scripturile marcate ca descărcate. Mențineți domeniul de aplicare restrâns, verificați codul nefamiliar și lăsați setările gestionate centralizat în seama administratorului IT.