Jak ustawić ExecutionPolicy: odmowa dostępu do klucza rejestru

22

Używam Windows Server 2008 jako administrator i próbowałem ustawić ExecutionPolicy jako Remotesigned dla PowerShell v2 w następujący sposób:

Set-ExecutionPolicy RemoteSigned

Ale dostałem ten błąd:

Set-ExecutionPolicy : Access to the registry key 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft
.PowerShell' is denied.
At line:1 char:20
+ Set-ExecutionPolicy <<<<  RemoteSigned
    + CategoryInfo          : NotSpecified: (:) [Set-ExecutionPolicy], UnauthorizedAccessException
    + FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.SetExecutionPolicyComma
   nd

Jak to naprawić?

atricapilla
źródło

Odpowiedzi:

24

Kliknij prawym przyciskiem myszy skrót PowerShell i wybierz „Uruchom jako administrator”

użytkownik25572
źródło
5
Należy również pamiętać, że jeśli masz 64-bitowy system operacyjny, musisz ustawić zasady wykonywania zarówno dla 32-bitowej, jak i 64-bitowej wersji programu PowerShell.
Joey
Nie musisz uruchamiać go jako administrator, po prostu uruchom go, -Scope CurrentUserjak sugeruje odpowiedź Janusa
CharlesB
12

Stephen Jennings w odpowiedzi na to samo pytanie na StackOverflow:

Set-ExecutionPolicy Unrestricted -Scope CurrentUser

Spowoduje to ustawienie zasad wykonywania dla bieżącego użytkownika (przechowywanego w HKEY_CURRENT_USER) zamiast na komputerze lokalnym (HKEY_LOCAL_MACHINE).

Janus
źródło
3
Dzięki. To poprawna odpowiedź, nie wszyscy mają uprawnienia administratora, ale to nadal działa.
Charles Clayton
4

W przypadku, gdy „Uruchom jako administrator” nie działa dla ciebie (początkowo nie dla mnie) lub jeśli chcesz stałego rozwiązania, znalazłem poprawkę, dodając uprawnienia bezpośrednio do rejestru systemu Windows. Po zrobieniu tego, gdy zadzwoniłem do get-ExecutionPolicy, nie powróciło już ograniczone.

Jest to odpowiednik set-ExecutionPolicy RemoteSigned, a faktycznie działa.

Napisałem o tym tutaj: http://kyleclegg.com/powershell/

Mam nadzieję że to pomoże.

Kyle
źródło
0

Przekonałem się, że jedynym rozwiązaniem tego błędu, który zadziałał, było uruchomienie regedt32 i przejście do klucza, a następnie zmiana uprawnień użytkowników z odczytu na pełną kontrolę. Lokalne uprawnienia na serwerze mają pierwszeństwo przed prawami administratora domeny.

Mark Shelton
źródło
Niezbyt dobra odpowiedź, biorąc pod uwagę dwie pozostałe odpowiedzi już obecne ...
HopelessN00b