Nie można ustawić Powershell ExecutionPolicy dla CurrentUser

11

Oto przykładowe polecenia, które uruchamiam:

PS C:\> Get-ExecutionPolicy -List 

        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       Undefined
 LocalMachine    Unrestricted


PS C:\> Set-ExecutionPolicy Unrestricted -Scope CurrentUser
PS C:\> Get-ExecutionPolicy -List

        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       Undefined
 LocalMachine    Unrestricted

Chcę, aby ustawić CurrentUsersię Unrestricted, ale nie wydaje się to zrobić. Poszukałem zasad grupy zgodnie z opisem w tym dokumencie MSDN , ale nie znalazłem niczego, co zostało skonfigurowane.

Wszelkie wskazówki, jak to ustawić?

CamronBute
źródło
Nie jestem w stanie tego odtworzyć. Działa zgodnie z przeznaczeniem na moim komputerze. Czy otrzymujesz jakieś błędy?
briantistka
@ briantist To błąd Windows 10.
CamronBute

Odpowiedzi:

11

Jak wszyscy inni powiedzieli, to wydaje się być błędem w wersji zapoznawczej systemu Windows 10. Uruchomiłem go, podając po prostu parametr -Force.

Ustawienie dla komputera lokalnego:

Set-ExecutionPolicy RemoteSigned -Force

Ustawienie dla bieżącego użytkownika:

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force

ddcruver
źródło
4

To wydaje się być błędem w systemie Windows 10. Musiałem utworzyć klucz HKEY_CURRENT_USER\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShelli utworzyć wartość ciągu w tym kluczu wywoływanym ExecutionPolicyz danymi, Unrestrictedzanim zadziała. Nawet wtedy nie mogę tego zmienić bez modyfikacji rejestru.

CamronBute
źródło
Jedyny, który pomógł. Czy wiesz dlaczego Set-ExecutionPolicynie działa?
nZeus
2

Miałem bardziej ogólny problem z polityką PowerShell niż PO, ale kombinacja odpowiedzi tutaj i gdzie indziej okazała się potrzebna, aby moja Win10 Anniversary Edition poprawnie zaktualizowała swoje zasady:

1) Upewnij się, że ten wpis rejestru istnieje i jest ustawiony na najniższym poziomie bezpieczeństwa, na który chcesz zezwolić: HKEY_CURRENT_USER\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell
Name:ExecutionPolicy Type: REG_SZ Data:Unrestricted
2) Upewnij się, że ten wpis rejestru istnieje i jest ustawiony na najniższym poziomie bezpieczeństwa, na który chcesz zezwolić: HKLM:\Software\Policies\Microsoft\Windows\PowerShell
Name:ExecutionPolicy Type: REG_SZ Data: Unrestricted
3) Zaktualizuj swoje zasady grupy przez uruchom gpedit.msci przejdź do Computer Configuration > Administrative Templates > Windows Components > Windows PowerShell
Wybierz Turn on Script Execution, a następnie Edytuj za policy settingpomocą Enablediw polu poniżej, które mówi Execution Policy, ustaw naAllow All Scripts

Po tym wszystkim możesz użyć odpowiedzi ddcruver, wymuszając aktualizację swoich zasad w zależności od tego, czego chcesz. Jeśli ustawisz swoje zasady na Nieograniczone, radzę ustawić wszystkie ustawienia, które się pojawiają, Get-ExecutionPolicy -Listna coś bardziej restrykcyjnego, na przykład RemoteSigned, ponieważ złośliwe skrypty PowerShell są jedną z głównych przyczyn złośliwego oprogramowania Windows wykorzystującego pamięć.

kayleeFrye_onDeck
źródło
1

Nie widzę błędu w mojej instalacji systemu Windows 10. Po prostu przeszedłem instalację za pomocą VMWare Workstation 11 i zbudowałem maszynę wirtualną. Uruchomiłem następujące bez wcześniejszych zmian:

wprowadź opis zdjęcia tutaj

Jeśli chcesz poznać wersję systemu Windows 10, mam: 10.0.10074


źródło
3
Widzę nieoczekiwane zachowanie opisane przez OP. Windows 10 Enterprise kompilacja 10130.
jscott
W takim przypadku należy przesłać błąd przez Connect lub sprawdzić, czy już go ma.
0

Musisz uruchomić PowerShell z podwyższonym trybem przed zmianą zasad wykonywania

agi
źródło
To nie rozwiązuje problemu PO.
kayleeFrye_onDeck
0

Odkryłem, że klucz rejestru znajduje się pod adresem

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell 

został ustawiony na RemoteSigned. Ustawienie wartości Unrestricteddziałało dla mnie.

Mike Morrison
źródło