Strona główna
» WINDOWS
»
Jak naprawić błąd „Uruchamianie skryptów jest wyłączone w tym systemie” w programie PowerShell w systemie Windows 10
Jak naprawić błąd „Uruchamianie skryptów jest wyłączone w tym systemie” w programie PowerShell w systemie Windows 10
Aby naprawić błąd „Uruchamianie skryptów jest wyłączone w tym systemie” na komputerze osobistym z systemem Windows 10, ustaw program PowerShell na RemoteSigned dla swojego konta użytkownika , a następnie uruchom skrypt z odpowiedniego folderu. Otwórz program Windows PowerShell i wpisz:
Potwierdź zmianę, gdy pojawi się monit. Dotyczy to tylko Twojego konta Windows i nie wymaga okna administratora. Jeśli potrzebujesz uruchomić zaufany skrypt tylko raz, skorzystaj z poniższej opcji sesji tymczasowej.
1. Sprawdź, która polityka wykonywania blokuje skrypt
W tej samej aplikacji PowerShell, w której pojawił się błąd, uruchom:
Get-ExecutionPolicy -List
Polecenie wyświetla listę zasad dla zasad grupy, bieżącej sesji, konta użytkownika i komputera. RestrictedZezwala na pojedyncze polecenia, ale blokuje pliki skryptów; jest to domyślna zasada dla komputerów klienckich z systemem Windows, jeśli nie ustawiono żadnej innej zasady. Program PowerShell używa najbardziej konkretnego ustawienia, a ustawienia zasad grupy mają pierwszeństwo.
Przed zmianą zasad sprawdź podane zakresy.
Zasady wykonywania to funkcja bezpieczeństwa, która pomaga zapobiegać niezamierzonemu uruchamianiu skryptów, ale Microsoft opisuje je jako głęboką obronę, a nie granicę bezpieczeństwa. Skrypt nadal może być szkodliwy, dlatego przed zezwoleniem na jego uruchomienie należy przejrzeć jego kod i zweryfikować jego źródło. Zobacz przewodnik Microsoftu po zasadach wykonywania programu Windows PowerShell 5.1 .
2. Zezwól na skrypty lokalne dla swojego konta
W przypadku skryptów, które tworzysz lub którym ufasz, ustaw zasady na poziomie użytkownika na RemoteSigned:
Gdy program PowerShell zapyta, czy chcesz zmienić zasady wykonywania, wpisz Yi naciśnij Enter, jeśli chcesz kontynuować. Zmiana zostanie wprowadzona natychmiast; nie musisz ponownie uruchamiać programu PowerShell. CurrentUserDotyczy to tylko Twojego konta i pozwala uniknąć zmiany domyślnego LocalMachinezakresu, który dotyczy wszystkich i wymaga okna programu PowerShell z podwyższonymi uprawnieniami.
Po wyświetleniu monitu potwierdź zmianę ustawienia RemoteSigned tylko na koncie.
RemoteSignedZezwala na lokalne skrypty, które nie są oznaczone jako pobierane z internetu. Wymaga, aby pobrane skrypty miały zaufany podpis cyfrowy, chyba że celowo odblokujesz konkretny plik. Unikaj zmiany zasad na Unrestrictedlub Bypassjako ogólnego rozwiązania: te ustawienia pozwalają na uruchamianie większej liczby skryptów z mniejszą liczbą ostrzeżeń.
3. Uruchom skrypt z jego folderu
Przejdź do folderu zawierającego .ps1plik, a następnie dodaj ./(lub użyj skrótu w stylu Windows .\) przed jego nazwą. Na przykład:
Set-Location 'C:\Scripts'
.\MyScript.ps1
PowerShell nie uruchamia automatycznie pliku z bieżącego katalogu po wpisaniu samej nazwy. Jeśli ścieżka zawiera spacje lub uruchamiasz plik z innego folderu, użyj operatora wywołania i podaj pełną ścieżkę w cudzysłowie:
& 'C:\Scripts\My Script.ps1'
Sprawdź obowiązującą politykę, a następnie wywołaj skrypt za pomocą ścieżki.
4. Jeśli pobrany skrypt jest nadal zablokowany
Dzięki temu RemoteSignedniepodpisany skrypt pobrany z internetu może pozostać zablokowany nawet po zmianie zasad. Najpierw sprawdź skrypt i upewnij się, że ufasz jego źródłu. Jeśli tak, odblokuj tylko ten plik:
Użyj prawidłowej ścieżki, jeśli plik znajduje się gdzie indziej. Unblock-FileUsuwa znacznik pobierania z internetu z pliku; nie sprawdza kodu ani nie zabezpiecza niebezpiecznego skryptu. Firma Microsoft dokumentuje to zachowanie w dokumentacji Unblock-File programu Windows PowerShell 5.1 .
Odblokowuj tylko sprawdzone pliki, których źródłu ufasz.
Użyj tymczasowej polityki na jedną sesję
Jeśli nie chcesz, aby ustawienia dla poszczególnych użytkowników były trwałe, zamknij bieżące okno programu PowerShell i otwórz nowe. Następnie uruchom to przed skryptem:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
Zakres Processdotyczy tylko danej sesji programu PowerShell i jej procesów potomnych; zamknięcie okna powoduje jego wyczyszczenie. Nadal obowiązuje jednak RemoteSignedzasada, więc pobrany niepodpisany plik może wymagać sprawdzenia i indywidualnego odblokowania. W dokumencie Set-ExecutionPolicy wyjaśniono dostępne zakresy i wartości zasad.
Jeśli błąd nadal występuje
Uruchom Get-ExecutionPolicy, aby sprawdzić obowiązującą zasadę i Get-ExecutionPolicy -Listto, co ją kontroluje. Jeśli ustawiono MachinePolicylub UserPolicy, zasady grupy organizacji kontrolują wykonywanie skryptów. Nie próbuj ich pomijać; skontaktuj się z administratorem.
Upewnij się, że zmieniłeś zasady w tej samej edycji programu PowerShell, której używasz do uruchomienia skryptu. W programach Windows PowerShell 5.1 ( powershell.exe) i PowerShell 7 ( pwsh.exe) ustawienia zasad są przechowywane oddzielnie.
Jeśli chcesz później usunąć zmianę dla każdego użytkownika, uruchom polecenie Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope CurrentUser. Spowoduje to wyczyszczenie tylko CurrentUserustawienia; obowiązująca polityka powróci do innego skonfigurowanego zakresu lub, jeśli w systemie Windows 10 nie ma takiego zakresu, do Restricted.
W przypadku większości osobistych systemów Windows 10, RemoteSignedopcja „at” CurrentUserwystarczy do uruchomienia skryptów lokalnych, zachowując jednocześnie sprawdzanie skryptów oznaczonych jako pobrane. Należy zawęzić zakres, weryfikować nieznany kod i pozostawić centralnie zarządzane ustawienia administratorowi IT.