Większość istniejących odpowiedzi wyjaśnia, jak , ale bardzo niewiele wyjaśnia, dlaczego . A zanim zaczniesz wykonywać w Internecie kod od nieznajomych, zwłaszcza kod wyłączający środki bezpieczeństwa, powinieneś dokładnie zrozumieć, co robisz. Oto trochę więcej szczegółów na temat tego problemu.
Ze strony TechNet About Execution Policies :
Zasady wykonywania programu Windows PowerShell pozwalają określić warunki, w których program Windows PowerShell ładuje pliki konfiguracyjne i uruchamia skrypty.
Korzyści, które, jak wyliczono w programie PowerShell Basics - Zasady wykonywania i podpisywanie kodu , to:
- Kontrola wykonania - kontroluj poziom zaufania do wykonywania skryptów.
- Command Highjack - Zapobiegaj wstrzykiwaniu poleceń na moją ścieżkę.
- Tożsamość - czy skrypt został utworzony i podpisany przez zaufanego programistę i / lub podpisany certyfikatem z zaufanego urzędu certyfikacji.
- Integralność - Skrypty nie mogą być modyfikowane przez złośliwe oprogramowanie lub złośliwego użytkownika.
Aby sprawdzić bieżące zasady wykonywania, możesz uruchomić Get-ExecutionPolicy
. Ale prawdopodobnie jesteś tutaj, ponieważ chcesz to zmienić.
Aby to zrobić, uruchom polecenie Set-ExecutionPolicy
cmdlet.
Podczas aktualizacji zasad wykonywania będziesz musiał podjąć dwie główne decyzje.
Typ zasad wykonania:
Restricted
† - W systemie nie można wykonać skryptu lokalnego, zdalnego ani pobranego.
AllSigned
- Wszystkie uruchamiane skrypty wymagają podpisu cyfrowego.
RemoteSigned
- Wszystkie zdalne skrypty (UNC) lub pobrane muszą być podpisane.
Unrestricted
- Nie jest wymagany podpis dla żadnego rodzaju skryptu.
Zakres nowej zmiany
LocalMachine
† - Zasady wykonania dotyczą wszystkich użytkowników komputera.
CurrentUser
- Polityka wykonywania dotyczy tylko bieżącego użytkownika.
Process
- Zasady wykonywania dotyczą tylko bieżącego procesu Windows PowerShell.
† = Domyślnie
Na przykład : jeśli chcesz zmienić zasadę na RemoteSigned tylko dla CurrentUser, uruchom następującą komendę:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Uwaga : Aby zmienić zasady wykonywania, musisz uruchomić PowerShell As Adminstrator . Jeśli jesteś w trybie zwykłym i próbujesz zmienić zasady wykonywania, pojawi się następujący błąd:
Odmowa dostępu do klucza rejestru „HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ PowerShell \ 1 \ ShellIds \ Microsoft.PowerShell”. Aby zmienić zasady wykonywania dla domyślnego zakresu (LocalMachine), uruchom Windows PowerShell z opcją „Uruchom jako administrator”.
Jeśli chcesz zaostrzyć wewnętrzne ograniczenia dotyczące własnych skryptów, które nie zostały pobrane z Internetu (lub przynajmniej nie zawierają metadanych UNC), możesz zmusić zasadę do uruchamiania tylko podpisanych skryptów. Aby podpisać własne skrypty, możesz postępować zgodnie z instrukcjami w artykule Scotta Hanselmana na temat Podpisywanie skryptów PowerShell .
Uwaga : większość osób może otrzymać ten błąd przy każdym otwarciu programu Powershell, ponieważ pierwszą rzeczą, którą PS próbuje zrobić po uruchomieniu, jest wykonanie skryptu profilu użytkownika, który konfiguruje środowisko w dowolny sposób.
Plik zazwyczaj znajduje się w:
%UserProfile%\My Documents\WindowsPowerShell\Microsoft.PowerShellISE_profile.ps1
Dokładną lokalizację można znaleźć, uruchamiając zmienną PowerShell
$profile
Jeśli w profilu nie ma nic, na czym ci zależy i nie chcesz niepokoić się ustawieniami zabezpieczeń, możesz go po prostu usunąć, a PowerShell nie znajdzie niczego, czego nie mógłby wykonać.