Podczas próby uruchomienia skryptu PowerShell, który nie został podpisany przez zaufanego wydawcę, może zostać wyświetlony następujący błąd zabezpieczeń:
„script.ps1 :File path\script.ps1 cannot be loaded. Plik path\script.ps1 nie jest podpisany cyfrowo. Nie można uruchomić tego skryptu w bieżącym systemie.”
Ten błąd bezpieczeństwa może wystąpić, gdy polityka wykonania programu PowerShell jest ustawiona na Allsigned lub Remotesigned, a skrypt nie jest podpisany.
Polityka wykonania Allsigned umożliwia wykonanie wszystkich skryptów Powershell, które są podpisane. Przed wykonaniem skryptu użytkownik zostanie poproszony o potwierdzenie, że ufa wydawcy, który podpisał skrypt.
Remote execution policy ogranicza wykonywanie pobranych skryptów, które nie są podpisane. Skrypty, które są wykonywane z komputera lokalnego nie muszą być podpisane.
Rozwiązanie
Istnieją różne metody pokonania tego błędu. Możesz wybrać albo podpisać skrypt PowerShell, zmienić politykę wykonania, ominąć politykę lub odblokować plik, aby można go było uruchomić raz na tej sesji.
Sprawdź politykę wykonania
Przede wszystkim sprawdź swoją politykę wykonania za pomocą cmdlet Get-ExecutionPolicy
PS C:\> Get-ExecutionPolicyAllSigned
Parametr listy w cmdlet Get-ExecutionPolicy mówi o polityce wykonania dla każdego zakresu.
PS C:\> Get-ExecutionPolicy -list Scope ExecutionPolicy ----- --------------- MachinePolicy Undefined UserPolicy Undefined Process Undefined CurrentUser Undefined LocalMachine RemoteSigned
Domyślna polityka wykonania dla wszystkich wersji systemu Windows z wyjątkiem Windows 2012 R2 to Restricted. Domyślną polityką wykonania w Windows 2012 R2 jest RemoteSigned.
Zmiana polityki wykonania na stałe
Najprostszą, ale niezabezpieczoną metodą pozbycia się tego komunikatu o błędzie jest zmiana ExecutionPolicy za pomocą cmdletu SetExecutionPolicy. Poniższe polecenie ustawia politykę wykonania na nieograniczoną.
PS C:\> Set-ExecutionPolicy unrestricted
Naciśnij Y, aby potwierdzić zmianę, gdy pojawi się monit. Zmiana polityki jest aktualizowana w rejestrze i pozostanie, dopóki nie zostanie ponownie zmieniona.
Changing Execution Policy Temporarily
Zamiast zmieniać politykę wykonania na stałe, można ustawić inną politykę dla pojedynczej sesji PowerShell. Można to zrobić za pomocą parametru ExecutionPolicy w powershell.exe
Otwórz wiersz poleceń lub PowerShell i wykonaj polecenie:
C:\> powershell.exe -executionpolicy -bypass
Powyższe polecenie otwiera sesję PowerShell z polityką wykonania dla tej sesji ustawioną na Bypass, co oznacza, że nic nie jest blokowane.
Odblokowanie pliku, który został pobrany
Gdy polityka wykonania ma wartość RemoteSigned, pliki, które są pobierane z Internetu (lub z wiadomości e-mail) są blokowane w celu ochrony przed uruchomieniem niebezpiecznych skryptów. Jeśli masz pewność, że zawartość skryptu jest bezpieczna, możesz go odblokować i uruchomić na swojej sesji za pomocą cmdletu Unblock-File
PS C:\> Unblock-File -Path C:\Downloads\script1.ps1
Po zmianie polityki wykonywania na stałe lub tymczasowo dla sesji lub konkretnego skryptu możesz nadal go uruchamiać, ale zanim to zrobisz, upewnij się, że zawartość skryptu nie uszkodzi twojego komputera
.