Last Updated on 27/06/2023 by administrator
Powershell cannot be loaded because running scripts is disabled on this system
Problém:
File <script> cannot be loaded because running scripts is disabled on this system. For more information, see about_Execution_Policies at https:/g
o.microsoft.com/fwlink/?LinkID=135170, je hláška, která se může objevit při spustěni scriptu v Powershell ve Windows 10. Toto přesněji ukazuje hláška níže:
PS C:\Windows\system32> PowerShell C:\pingbeep.ps1 C:\pingbeep.ps1 : File C:\pingbeep.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 + C:\pingbeep.ps1 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : SecurityError: (:) [], PSSecurityException + FullyQualifiedErrorId : UnauthorizedAccess
Vysvětlení:
Řešením může moct změnit konfiguraci PowerShell Execution Policy, což jsou spouštěcí politiky v PowerShellu. Ty definují, zda je vyžadováno pro spouštění skriptů, aby byly digitálně podepsány či nikoliv.
Windows 10 definuje politiku Restricted a ve Windows Server zase politiku RemoteSigned.
Jednotlivé typy Execution policy jsou definované zde [2].
Řešení:
1. Otevřít Powershell jako administrátor:
2. Aplikovat příkaz níže, který ukáže aktuální konfiguraci PowerShell Execution Policy:
Get-ExecutionPolicy -List
Výstup příkazu Get-ExecutionPolicy -List ukazuje, že aktuální okno Powershellu pro uživatele je nastaveno na Restricted, díky kterému nebylo možné spustit script:
Scope ExecutionPolicy ----- --------------- MachinePolicy Undefined UserPolicy Undefined Process Undefined CurrentUser Restricted LocalMachine RemoteSigned
Pro změnu Aplikovat příkaz níže:
Set-ExecutionPolicy Unrestricted
Je možné že po tomto příkazu vyskočí chyba níže:
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? [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "N"): Y Set-ExecutionPolicy : Windows PowerShell updated your execution policy successfully, but the setting is overridden by a policy defined at a more specific scope. Due to the override, your shell will retain its current effective execution policy of Restricted. Type "Get-ExecutionPolicy -List" to view your execution policy settings. For more information ple ase see "Get-Help Set-ExecutionPolicy". At line:1 char:1 + Set-ExecutionPolicy Unrestricted + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : PermissionDenied: (:) [Set-ExecutionPolicy], SecurityException + FullyQualifiedErrorId : ExecutionPolicyOverride,Microsoft.PowerShell.Commands.SetExecutionPolicyCommand
3. V tomto případě zadat příkaz níže, který vypne Execution Policy pro uživatele
Set-ExecutionPolicy Unrestricted -Scope CurrentUser -Force
4. Znovu spustit script:
PS C:\Windows\system32> PowerShell C:\pingbeep.ps1 01/19/2022 17:20:28 Unreachable: 192.168.0.8
Zdroj:
[2] https://www.michalzobec.cz/powershell-jak-deaktivovat-powershell-execution-policy-8149