Ha olyan PowerShell-skriptet próbál futtatni, amelyet nem egy megbízható kiadó írt alá, a következő biztonsági hibát kaphatja:
“script.ps1 :A path\script.ps1 fájl nem tölthető be. A path\script.ps1 fájl nincs digitálisan aláírva. Ezt a parancsfájlt nem lehet futtatni az aktuális rendszeren.”
Ez a biztonsági hiba akkor fordulhat elő, ha a PowerShell futtatási házirendje Allsigned vagy Remotesigned értékre van állítva, és a parancsfájl nincs aláírva.
Allsigned futtatási házirend minden olyan Powershell parancsfájl végrehajtását lehetővé teszi, amely alá van írva. A parancsfájl végrehajtása előtt a rendszer kéri, hogy erősítse meg, hogy megbízik a parancsfájlt aláíró kiadóban.
A távoli végrehajtás házirend korlátozza a letöltött, alá nem írt parancsfájlok végrehajtását. A helyi számítógépről végrehajtott szkripteket nem kell aláírni.
megoldás
A hiba kiküszöbölésére különböző módszerek állnak rendelkezésre. Választhat, hogy vagy aláírja a PowerShell szkriptet, megváltoztatja a végrehajtási házirendet, megkerüli a házirendet, vagy feloldja a blokkolást, hogy a fájl egyszer futtatható legyen az adott munkamenetben.
Futtatási házirend ellenőrzése
Először is ellenőrizze a végrehajtási házirendet a Get-ExecutionPolicy
PS C:\> Get-ExecutionPolicyAllSigned
A Get-ExecutionPolicy cmdlet lista paramétere megadja az egyes hatókörökre vonatkozó végrehajtási házirendet.
PS C:\> Get-ExecutionPolicy -list Scope ExecutionPolicy ----- --------------- MachinePolicy Undefined UserPolicy Undefined Process Undefined CurrentUser Undefined LocalMachine RemoteSigned
A Windows 2012 R2 kivételével minden Windows verzió alapértelmezett végrehajtási házirendje Restricted. A Windows 2012 R2 alapértelmezett végrehajtási házirendje a RemoteSigned.
A végrehajtási házirend végleges módosítása
A legegyszerűbb, de nem biztonságos módszer a hibaüzenet megszüntetésére az ExecutionPolicy módosítása a SetExecutionPolicy cmdlet segítségével. A következő parancs a végrehajtási házirendet korlátlanra állítja be.
PS C:\> Set-ExecutionPolicy unrestricted
Nyomja meg az Y gombot a módosítás megerősítéséhez, amikor a rendszer kéri. A házirend módosítása frissül a rendszerleíró adatbázisban, és mindaddig érvényben marad, amíg újra meg nem változtatja.
A végrehajtási házirend ideiglenes módosítása
A végrehajtási házirend végleges módosítása helyett beállíthat egy másik házirendet egyetlen PowerShell munkamenethez. Ez a powershell.exe
A parancssor vagy a PowerShell megnyitásával és a parancs futtatásával érhető el:
C:\> powershell.exe -executionpolicy -bypass
A fenti parancs megnyit egy PowerShell munkamenetet, amelynek végrehajtási házirendje Bypass értékre van állítva, ami azt jelenti, hogy semmi sem lesz blokkolva.
Letöltött fájl blokkolásának feloldása
Ha a végrehajtási házirend RemoteSigned, akkor az internetről (vagy e-mailből) letöltött fájlok blokkolva vannak a nem biztonságos szkriptek futtatásának védelme érdekében. Ha bízik abban, hogy a parancsfájl tartalma biztonságos, akkor az Unblock-File parancsikonnal
PS C:\> Unblock-File -Path C:\Downloads\script1.ps1
Ha véglegesen vagy ideiglenesen megváltoztatta a végrehajtási házirendet egy munkamenet vagy egy adott parancsfájl számára, akkor folytathatja a parancsfájl futtatását, de előtte győződjön meg arról, hogy a parancsfájl tartalma nem károsítja a számítógépét
.