PowerShell mówi: „wykonywanie skryptów jest wyłączone w tym systemie”.

1760

Próbuję uruchomić plik, który wywołuje a skrypt z cmd.exei otrzymuję następujący błąd:

Management_Install.ps1 nie można załadować, ponieważ wykonywanie skryptów jest wyłączone w tym systemie.

Uciekłem

Set-ExecutionPolicy -ExecutionPolicy Unrestricted

a kiedy biegnę Get-ExecutionPolicyz, UnrestrictedWracam.

PS C:\Users\Administrator\> Get-ExecutionPolicy
Unrestricted

C:\Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts\> powershell .\Management_Install.ps1 1

WARNING: Running x86 PowerShell...

C:\Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts\Management_Install.ps1Nie można załadować pliku, ponieważ wykonywanie skryptów jest wyłączone w tym systemie. Aby uzyskać get-help about_signingwięcej informacji, zobacz „ ”.

W linii: 1 znak: 25

  • .\Management_Install.ps1 <<<< 1

    • CategoryInfo: NotSpecified: (:) [], PSSecurityException

    • FullyQualifiedErrorId: RuntimeException

C:\Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts\> PAUSE

Press any key to continue . . .

System to Windows Server 2008R2.

Co ja robię źle?

Conor
źródło
3
Nie patrz kolego, jestem zalogowany jako Administrator, a także przebiegłem jako „Administrator” i uzyskałem taki sam wynik jak powyżej ...
Conor,
2
Doszłam do sedna, błąd wprowadzał w błąd, problem był w moim skrypcie PowerShell, dzięki!
Conor,
Warto zauważyć, że polityka wykonywania ma wiele zakresów, a uruchamianie programu PowerShell na różne sposoby może zapewnić różne zasady. Aby wyświetlić listę zasad, uruchom Get-ExecutionPolicy -List.
Bacon Bits

Odpowiedzi:

2240

Jeśli używasz systemu Windows Server 2008 R2, istnieje wersja programu PowerShell x64 i x86, które muszą mieć ustawione zasady wykonywania. Czy ustawiłeś zasady wykonywania na obu hostach?

Jako administrator możesz ustawić zasady wykonywania, wpisując to w oknie PowerShell:

Set-ExecutionPolicy RemoteSigned

Aby uzyskać więcej informacji, zobacz Korzystanie z polecenia cmdlet Set-ExecutionPolicy .

Po zakończeniu możesz przywrócić domyślną wartość zasad za pomocą:

Set-ExecutionPolicy Restricted
Chad Miller
źródło
141
Set-ExecutionPolicy Restrictedwydaje się być sposobem na cofnięcie tego, jeśli chcesz przywrócić uprawnienia bez zmian : technet.microsoft.com/en-us/library/ee176961.aspx . Tymczasowa metoda obejścia @Jack Edmondswydaje mi się bezpieczniejsza:powershell -ExecutionPolicy ByPass -File script.ps1
SharpC
33
Aby uzyskać bezpieczniejszą politykę, należy objąć ją faktycznego użytkownika: Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
Nuno Aniceto
Set-ExecutionPolicy RemoteSigned nie może być pierwszym wierszem skryptu. Jeśli tak, zaznacz go i uruchom WYŁĄCZNIE TYLKO przed uruchomieniem reszty skryptu.
ozzy432836
Na stronie SF natknąłem się na podobne pytanie: „Polityka wykonywania Powershell w SQL Server” zadała 10 października 14. Odpowiedzi tam zawarte Get-ExecutionPolicy -Listpomogły mi zobaczyć różne zakresy. Cmd Get-ExecutionPolicynie pokazuje wszystkich zakresów. Import-Module SQLPSTeraz działa z zasady zmieniły się w sposób następujący: {Undefined- Process,MachinePolicy,UserPolicy,}; {RemoteSigned- CurrentUser, LocalMachine}.
SherlockSpreadsheets
Jeśli to zrobię, czy zmiana trwa tylko przez czas trwania bieżącego programu PowerShell? A może jest większy?
William Jockusch
709

Możesz ominąć tę zasadę dla pojedynczego pliku, dodając -ExecutionPolicy Bypasspodczas uruchamiania programu PowerShell

powershell -ExecutionPolicy Bypass -File script.ps1
Jack Edmonds
źródło
3
Jest to również bardzo przydatne, jeśli masz konto inne niż administrator. Zrobiłem skrót do %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy ByPassmojego paska zadań.
zek19
3
Pamiętaj, że Microsoft Technet stylizuje go jako „Bypass”, a nie „ByPass”. Zobacz: technet.microsoft.com/nl-nl/library/hh849812.aspx
Jelle Geerts
1
To nie działa dla mnie, dostaję takie samo pozwolenie, jak gdybym zadzwonił normalnie. type script.ps1 | powershell -Jednak wywoływanie ps1 z .bat przez działanie działa.
Some_Guy,
8
Celem Polityki Wykonawczej jest zapobieganie dwukrotnemu kliknięciu .ps1i przypadkowemu uruchomieniu przez ludzi czegoś, czego nie chcieli. Tak by się stało z .batplikami
Kolob Canyon
Ratujesz mój dzień, dziękuję za odpowiedź.
Arpit Patel
162

Miałem podobny problem i zauważyłem, że domyślnie cmdw systemie Windows Server 2012 działał system x64.

W systemie Windows 7 , Windows 8 , Windows 10 , Windows Server 2008 R2 lub Windows Server 2012 uruchom następujące polecenia jako Administrator :

x86 (32 bity)
Otwórz C:\Windows\SysWOW64\cmd.exe
Uruchom poleceniepowershell Set-ExecutionPolicy RemoteSigned

x64 (64-bitowy)
Otwórz C:\Windows\system32\cmd.exe
Uruchom poleceniepowershell Set-ExecutionPolicy RemoteSigned

Możesz sprawdzić tryb za pomocą

  • W CMD: echo %PROCESSOR_ARCHITECTURE%
  • W PowerShell: [Environment]::Is64BitProcess

Odniesienia:
MSDN - zasady wykonywania Windows PowerShell
Windows - wersja 32-bitowa vs 64-bitowa

Ralph Willgoss
źródło
132

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-ExecutionPolicycmdlet.

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ć.

KyleMit
źródło
8
Wydaje mi się, że ważne jest, aby pamiętać, że chociaż polityka wykonywania jest środkiem bezpieczeństwa, nie ma ona na celu uniemożliwienia użytkownikom wykonywania kodu PowerShell. Polityka wykonania ma na celu ochronę twoich skryptów i określenie, kto je napisał, zmodyfikował lub zatwierdził i to wszystko. Łatwo jest obejść zasady egzekucji za pomocą czegoś tak prostego jak Get-Content .\MyFile.ps1 | powershell.exe -NoProfile -.
Bacon Bits
1
Biorąc jednak pod uwagę -ExecutionPolicy ByPass, jaki jest cel tej polityki? Czy to po to, aby uniemożliwić użytkownikom przypadkowe otwarcie konsoli PowerShell i uruchomienie złośliwego skryptu? Czy osoba atakująca nie może po prostu użyć pliku wykonywalnego lub skryptu wsadowego, jeśli chce to obejść? Nawet po przeczytaniu komentarza @BaconBits nie jestem do końca pewien, jaki scenariusz ma zapobiec tej polityce ...
Ajedi32,
2
@ Ajedi32 Powiedz, że mam zadanie uruchamiające skrypt w udziale sieciowym. Kiedy wywołuję skrypt, chcę, aby mój proces sprawdził, czy skrypt jest podpisany. Chcę, aby mój kod dokładnie sprawdził, czy skrypt, który zamierzam uruchomić, jest kodem, któremu ufam. Nie obchodzi mnie, czy możesz uruchomić mój kod. Zatrzymanie, które jest zadaniem praw dostępu. Chcę tylko uniemożliwić ci uruchamianie kodu, którego nie napisałem. Prawa dostępu oznaczają, że system operacyjny uniemożliwia modyfikowanie mojego kodu po zalogowaniu. Kod podpisanie i wykonanie polityka oznacza mój skrypt nie został zmodyfikowany, gdy mam iść, aby go uruchomić.
Bacon Bits
40

W systemie Windows 7:

Przejdź do menu Start i wyszukaj „Windows PowerShell ISE”.

Kliknij prawym przyciskiem myszy wersję x86 i wybierz „Uruchom jako administrator”.

W górnej części wklej Set-ExecutionPolicy RemoteSigned; uruchom skrypt. Wybierz „Tak”.

Powtórz te kroki dla 64-bitowej wersji Powershell ISE (wersja inna niż x86).

Właśnie wyjaśniam kroki, o których wspomniał @Chad Miller. Dzięki Czad!

Ryan
źródło
39

Również uruchomienie tego polecenia przed skryptem rozwiązuje problem:

set-executionpolicy unrestricted
Manik Sikka
źródło
27
-1 - Przestrzegaj zasady najmniejszego pozwolenia. Przynajmniej ustaw zasadę RemoteSignedprzed usunięciem wszystkich ograniczeń swojej polityki bezpieczeństwa. Jeśli to nie zadziała, ponownie sprawdź, jakie są twoje punkty bólu i dlaczego to nie działa. Możesz ustawić unrestrictedjako ostateczność, ale nie powinien to być punkt wyjścia.
KyleMit
3
Dziękujemy za wskazanie tej opcji. Z całym szacunkiem dla potrzeb bezpieczeństwa do celów produkcyjnych, w czasach, gdy zapotrzebowanie na szybkie prototypowanie jest tak wysokie, wszystkie zasady i zabezpieczenia naprawdę przeszkadzają w realizacji zadań.
tishma
1
Jeśli chodzi o komentarz dotyczący ponownego tworzenia prototypów, obawiam się, że właśnie dlatego kiepski kod wchodzi do produkcji. Oczywiście jest to tylko trywialny przykład, ale jeśli nie możesz rozwiązać czegoś tak trywialnego podczas programowania, to martw się o wydanie. Ponadto, jeśli chodzi o kod na zamówienie, a jeśli możesz, poznaj środowisko docelowe - ustawiliśmy większość naszych systemów wewnętrznych na Remotesigned.
Trix
33

Jeśli znajdujesz się w środowisku, w którym nie jesteś administratorem, możesz ustawić Zasady wykonywania tylko dla siebie i nie będzie to wymagało administratora.

Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "RemoteSigned"

lub

Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "Unrestricted"

Możesz przeczytać o tym wszystko we wpisie pomocy.

Help Get-ExecutionPolicy -Full
Help Set-ExecutionPolicy -Full
Micheasz „Powershell Ninja”
źródło
Działa świetnie dla mnie w systemie Windows 8, nawet gdy Set-ExecutionPolicy Unrestrictedjako administrator nie wydawał się „nieograniczony” na tyle, aby faktycznie pomóc.
patridge
1
Uważam, że to, czego możesz doświadczyć, to obiekt zasad grupy lub coś innego, nadpisujące twoje ustawienie poziomu wykonania „LocalMachine” w ExecutionPolicy. Nie można zastąpić tego, co ma zasada domeny za pomocą polecenia Set-ExecutionPolicy. Jednak ustawiając poziom dostępu „CurrentUser”, Ty i tylko Ty będziesz mieć określone Zasady wykonywania. Wynika to z faktu, że komputer patrzy na zasady CurrentUser w celu wykonania, zanim spojrzy na ustawienie LocalMachine.
Micheasz „Powershell Ninja”
1
Set-ExecutionPolicy -Scope „CurrentUser” -ExecutionPolicy „Unrestricted” to jedyne rozwiązanie, które działało dla mnie. Dziękuję
Paulj,
32

RemoteSigned: wszystkie skrypty, które sam stworzyłeś, zostaną uruchomione, a wszystkie skrypty pobrane z Internetu będą musiały zostać podpisane przez zaufanego wydawcę.

OK, zmień zasady, po prostu wpisując:

Set-ExecutionPolicy RemoteSigned
Jaime
źródło
Zgodnie z zaleceniami w innych postach: rozsądnie jest dołączyć „-Scope CurrentUser”, aby uzyskać bezpieczniejszą politykę, gdy ma to sens.
klasterdude
32

Status prądu możemy uzyskać ExecutionPolicypoleceniem poniżej:

Get-ExecutionPolicy;

Domyślnie jest ograniczony . Aby umożliwić wykonywanie skryptów PowerShell, musimy ustawić ExecutionPolicy jako Bypass lub Unrestricted .

Możemy ustawić zasady dla bieżącego użytkownika jako Bypasslub Unrestrictedprzy użyciu dowolnego z poniższych poleceń PowerShell:

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Bypass -Force;

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted -Force;

Nieograniczone zasady ładują wszystkie pliki konfiguracyjne i uruchamiają wszystkie skrypty. Jeśli uruchomisz niepodpisany skrypt pobrany z Internetu, przed uruchomieniem zostaniesz zapytany o zgodę.

Natomiast w polityce Bypass nic nie jest blokowane, a podczas wykonywania skryptu nie ma żadnych ostrzeżeń ani monitów. Obwodnica ExecutionPolicyjest bardziej zrelaksowana niż Unrestricted.

Pratik Patil
źródło
4
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Bypass -Force; AKA szybki i brudny sposób, aby powiedzieć VS2015, aby przestał narzekać i uruchomił mój cholerny skrypt. dzięki. ratownik.
Eon
1
Końcowe średniki na końcach poleceń są zbędne.
Bill_Stewart
23

Korzystam z systemu Windows 10 i nie mogłem uruchomić żadnego polecenia. Jedyne polecenie, które dało mi pewne wskazówki, to:

[x64]

  1. Otwórz C: \ Windows \ SysWOW64 \ cmd.exe [jako administrator]
  2. Uruchom polecenie> PowerShell Set-ExecutionPolicy bez ograniczeń

Ale to nie zadziałało. To było ograniczone. Prawdopodobnie nowe zasady bezpieczeństwa dla Windows10. Miałem ten błąd:

Set-ExecutionPolicy: Program Windows PowerShell pomyślnie zaktualizował zasady wykonywania, ale ustawienie jest zastępowane przez zasadę zdefiniowaną w bardziej szczegółowym zakresie. Z powodu zastąpienia twoja powłoka zachowa swoją aktualną efektywną politykę wykonywania ...

Więc znalazłem inny sposób ( rozwiązanie ):

  1. Otwórz Uruchom polecenie / konsolę ( Win+ R)
  2. Wpisz: gpedit.msc ( Edytor zasad grupy )
  3. Przejdź do lokalnych zasad komputera -> Konfiguracja komputera -> Szablony administracyjne -> Składniki systemu Windows -> Windows Powershell .
  4. Włącz „ Włącz wykonywanie skryptu
  5. Ustaw zasady zgodnie z potrzebami. Ustawiłem mój na „ Zezwalaj na wszystkie skrypty ”.

Teraz otwórz PowerShell i ciesz się;)

hugocabral
źródło
Czy jest to samodzielna instalacja, czy jesteś podłączony do grupy roboczej lub domeny?
UWAGA
Dlaczego warto otworzyć cmd, aby to zrobić? Wystarczy otworzyć ISE (jako administrator) i wpisaćSet-ExecutionPolicy RemoteSigned
Kolob Canyon
OMG, to w końcu naprawiło moje okno win10, @kolob set-wykonaniepolicy nie wystarczy
xer0x
Nie powinieneś używać Unrestricted. Lepiej jest używaćRemoteSigned
Kolob Canyon
@ xer0x powinno być tak długo, jak uruchamiasz PowerShell jako administrator
Kolob Canyon
10

Ustawienie zasad wykonywania zależy od środowiska. Jeśli próbujesz wykonać skrypt z uruchomionego ISE x86 , musisz użyć PowerShell x86, aby ustawić zasady wykonywania. Podobnie, jeśli używasz 64-bitowego ISE, musisz ustawić zasady za pomocą 64-bitowego programu PowerShell.

ScriptAholic
źródło
10

Win+ Ri wpisz polecenie kopiuj wklej i naciśnij OK:

powershell Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "RemoteSigned"

I uruchom skrypt.

Następnie przywróć zmiany, takie jak:

powershell Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "AllSigned"
Qamar
źródło
10

Możesz to również obejść, używając następującego polecenia:

PS > powershell Get-Content .\test.ps1 | Invoke-Expression

Możesz również przeczytać ten artykuł autorstwa Scotta Sutherlanda, który wyjaśnia 15 różnych sposobów obchodzenia programu PowerShell, Set-ExecutionPolicyjeśli nie masz uprawnień administratora:

15 sposobów na ominięcie zasad wykonywania PowerShell

Alexander Sinno
źródło
Jest to prawdopodobnie jeden z bardziej przekonujących przewodników dotyczących rozwiązywania problemów i zrozumienia tego ograniczenia.
Osvaldo Mercado
5
  1. Otwórz PowerShell jako Administrator i uruchom Set-ExecutionPolicy -Scope CurrentUser
  2. Podaj RemoteSigned i naciśnij Enter
  3. Uruchom Set-ExecutionPolicy -Scope CurrentUser
  4. Podaj nieograniczony i naciśnij klawisz Enter
Ramanujam Allam
źródło
5

możesz spróbować i wybrać opcję „Wszystkie”

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
Taqi Raza Khan
źródło
3

W edytorze ISE programu PowerShell znalazłem, że najpierw uruchomiłem następujący skrypt:

Set-ExecutionPolicy RemoteSigned -Scope Process
David Douglas
źródło
2

W PowerShell 2.0, zasady wykonywania były domyślnie wyłączone.

Od tego czasu zespół programu PowerShell wprowadził wiele ulepszeń i są przekonani, że użytkownicy nie będą wiele zepsuć podczas uruchamiania skryptów. Począwszy od PowerShell 4.0, jest on domyślnie włączony.

W twoim przypadku wpisz Set-ExecutionPolicy RemoteSignedz konsoli PowerShell i powiedz tak.

Adil Arif
źródło
2

Miałem dzisiaj ten sam problem. 64-bitowe zasady wykonywania były nieograniczone, a 32-bitowe ograniczone.

Oto jak zdalnie zmienić tylko zasady 32-bitowe:

Invoke-Command -ComputerName $servername -ConfigurationName Microsoft.PowerShell32 -scriptblock {Set-ExecutionPolicy unrestricted}
rko281
źródło
2

Przejdź do ścieżki rejestru HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShelli ustaw ExecutionPolicyna RemoteSigned.

sunish surendran.k
źródło
1
1. Otwórz PowerShell jako Administrator i uruchom Set-ExecutionPolicy -Scope CurrentUser 2. Podaj RemoteSigned i naciśnij Enter. 3. Uruchom Set-ExecutionPolicy -Scope CurrentUser 4. Podaj nieograniczony i naciśnij Enter
Ramanujam Allam
2

Otrzymuję kolejne ostrzeżenie, gdy próbuję uruchomić Set-ExecutionPolicy RemoteSigned

Rozwiązałem za pomocą tych poleceń

Set-ExecutionPolicy "RemoteSigned" -Scope Process -Confirm:$false

Set-ExecutionPolicy "RemoteSigned" -Scope CurrentUser -Confirm:$false
George C.
źródło
1

Jeśli jesteś tutaj z powodu uruchamiania go z Ruby lub Chef i używania `` wykonywania systemu, wykonaj następujące czynności:

`powershell.exe -ExecutionPolicy Unrestricted -command [Environment]::GetFolderPath(\'mydocuments\')`

To polecenie służy do pobierania folderu „MyDocuments”.

-ExecutionPolicy Unrestricted Zrób sztuczkę.

Mam nadzieję, że jest to pomocne dla kogoś innego.

JGutierrezC
źródło
Czy załącznik `` naprawdę powinien tam być?
Peter Mortensen,
1

Kilka odpowiedzi wskazuje na zasady wykonywania. Jednak niektóre rzeczy wymagają również „administratora runas”. Jest to najbezpieczniejsze, ponieważ nie ma trwałych zmian w zasadach wykonywania i można ominąć ograniczenia administratora. Użyj z harmonogramem, aby rozpocząć wsad z:

    runas.exe /savecred /user:administrator powershell -ExecutionPolicy ByPass -File script.ps1

zarówno powyżej Jacka Edmondsa, jak i Petera Mortensena / Dhany z posta Jak uruchomić aplikację jako „uruchom jako administrator” z wiersza poleceń?

Kirt Carson
źródło
1

Przekonałem się, że ta linia działa najlepiej na jednym z moich serwerów Windows Server 2008 R2. Kilka innych nie miało problemów bez tej linii w moich skryptach PowerShell:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Force -Scope Process
WIlliamT
źródło
1

Otwórz konsolę PowerShell jako administrator, a następnie ustaw zasady wykonywania

Set-ExecutionPolicy -ExecutionPolicy Remotesigned 
lokeshbandharapu
źródło
0

Możesz to zrobić w specjalny sposób:

Get-Content "PS1scriptfullpath.ps1" | Powershell-NoProfile -

Potokuje zawartość skryptu powershell do powershell.exe i wykonuje go z pominięciem zasad wykonywania.

Wasif Hasan
źródło
0

To rozwiązało mój problem

Otwórz PowerShellpolecenie Windows i uruchom poniżej zapytania, aby zmienićExecutionPolicy

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

jeśli poprosi o potwierdzenie zmian, naciśnij „Y” i naciśnij Enter.

Arvind Chourasiya
źródło
0

Uruchom Set-ExecutionPolicy RemoteSignedpolecenie

maxxi
źródło
0
  1. Otwórz PowerShell jako administrację
Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "RemoteSigned"

użyj tego polecenia

MD SHAYON
źródło
-1

Otwórz cmd zamiast PowerShell. Pomogło mi to ...

Jelmer Jellema
źródło
-2

Otwórz okno PowerShell jako administrator . To będzie działać.

Suganthan Raj
źródło
To nie działało. Jednak uruchomienie PowerShell Set-ExecutionPolicy RemoteSigned działało.
Thronk