Laut PowerShell ist die Ausführung von Skripten auf diesem System deaktiviert.

1760

Ich versuche a Datei, die a aufruft Skript von cmd.exe, und ich erhalte die folgende Fehlermeldung:

Management_Install.ps1 kann nicht geladen werden, da die Ausführung von Skripten auf diesem System deaktiviert ist.

ich bin gerannt

Set-ExecutionPolicy -ExecutionPolicy Unrestricted

und wenn ich renne Get-ExecutionPolicy ausIch komme Unrestrictedzurück.

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

Die Datei C:\Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts\Management_Install.ps1kann nicht geladen werden, da die Ausführung von Skripten auf diesem System deaktiviert ist. get-help about_signingWeitere Informationen finden Sie unter " ".

In Zeile: 1 Zeichen: 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 . . .

Das System ist Windows Server 2008R2.

Was mache ich falsch?

Conor
quelle
3
Kein Look Mate, ich bin als Administrator angemeldet und habe auch einen Lauf als "Administrator" durchgeführt und das gleiche Ergebnis wie oben erhalten ...
Conor
2
Ich bin dem auf den Grund gegangen, der Fehler war irreführend, das Problem war in meinem Powershell-Skript, danke!
Conor
Es ist erwähnenswert, dass die Ausführungsrichtlinie mehrere Bereiche umfasst und das Ausführen von PowerShell auf unterschiedliche Weise zu unterschiedlichen Richtlinien führen kann. Führen Sie aus, um die Liste der Richtlinien anzuzeigen Get-ExecutionPolicy -List.
Bacon Bits

Antworten:

2240

Wenn Sie Windows Server 2008 R2 verwenden, gibt es eine x64- und eine x86- Version von PowerShell, für die beide Ausführungsrichtlinien festgelegt werden müssen. Haben Sie die Ausführungsrichtlinie auf beiden Hosts festgelegt?

Als Administrator können Sie die Ausführungsrichtlinie festlegen, indem Sie diese in Ihr PowerShell-Fenster eingeben:

Set-ExecutionPolicy RemoteSigned

Weitere Informationen finden Sie unter Verwenden des Cmdlets Set-ExecutionPolicy .

Wenn Sie fertig sind, können Sie die Richtlinie auf den Standardwert zurücksetzen mit:

Set-ExecutionPolicy Restricted
Chad Miller
quelle
141
Set-ExecutionPolicy RestrictedDies scheint der Weg zu sein, um es rückgängig zu machen, wenn Sie die Berechtigungen auf den ursprünglichen Stand zurücksetzen möchten: technet.microsoft.com/en-us/library/ee176961.aspx . Die temporäre Bypass-Methode @Jack Edmondssieht für mich sicherer aus:powershell -ExecutionPolicy ByPass -File script.ps1
SharpC
33
Für eine sicherere Richtlinie sollten Sie sie auf den tatsächlichen Benutzer übertragen: Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
Nuno Aniceto
Set-ExecutionPolicy RemoteSigned kann nicht die erste Zeile in Ihrem Skript sein. Wenn dies der Fall ist, markieren Sie es und führen Sie es nur INITIELL aus, bevor Sie den Rest Ihres Skripts ausführen.
Ozzy432836
Auf der SF-Site stieß ich auf eine ähnliche Frage: "Powershell-Ausführungsrichtlinie in SQL Server" , die am 10. Oktober 14 gestellt wurde. Die dort enthaltenen Antworten Get-ExecutionPolicy -Listhalfen mir, die verschiedenen Bereiche zu erkennen. Das cmd Get-ExecutionPolicyzeigt nicht alle Bereiche an Import-Module SQLPS, mit denen jetzt gearbeitet wird geändert Richtlinien wie folgt: {Undefined- Process,MachinePolicy,UserPolicy,}; {RemoteSigned- CurrentUser, LocalMachine}.
SherlockSpreadsheets
Wenn ich dies tue, dauert die Änderung nur für die Dauer der aktuellen PowerShell? Oder ist es größer als das?
William Jockusch
709

Sie können diese Richtlinie für eine einzelne Datei umgehen, indem Sie sie -ExecutionPolicy Bypassbeim Ausführen von PowerShell hinzufügen

powershell -ExecutionPolicy Bypass -File script.ps1
Jack Edmonds
quelle
3
Dies ist auch sehr praktisch, wenn Sie ein Konto ohne Administratorrechte haben. Ich habe eine Verknüpfung zu %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy ByPassmeiner Taskleiste erstellt.
zek19
3
Beachten Sie, dass Microsoft Technet es als "Bypass" und nicht als "ByPass" stilisiert. Siehe: technet.microsoft.com/nl-nl/library/hh849812.aspx
Jelle Geerts
1
Das funktioniert bei mir nicht, ich bekomme die gleiche Erlaubnis verweigert, als ob ich es normal angerufen hätte. Das Aufrufen eines ps1 von einem .bat aus type script.ps1 | powershell -funktioniert jedoch.
Some_Guy
8
Der Zweck der Ausführungsrichtlinie besteht darin, zu verhindern, dass Personen auf eine doppelklicken .ps1und versehentlich etwas ausführen , was sie nicht wollten. Dies würde mit .batDateien passieren
Kolob Canyon
Sie retten meinen Tag, danke für die Antwort.
Arpit Patel
162

Ich hatte ein ähnliches Problem und stellte fest, dass cmdunter Windows Server 2012 standardmäßig x64 ausgeführt wurde.

Führen Sie unter Windows 7 , Windows 8 , Windows 10 , Windows Server 2008 R2 oder Windows Server 2012 die folgenden Befehle als Administrator aus :

x86 (32 Bit)
Öffnen C:\Windows\SysWOW64\cmd.exe
Führen Sie den Befehl auspowershell Set-ExecutionPolicy RemoteSigned

x64 (64 Bit)
Öffnen C:\Windows\system32\cmd.exe
Führen Sie den Befehl auspowershell Set-ExecutionPolicy RemoteSigned

Sie können den Modus mit überprüfen

  • In CMD: echo %PROCESSOR_ARCHITECTURE%
  • In Powershell: [Environment]::Is64BitProcess

Referenzen:
MSDN - Windows PowerShell-Ausführungsrichtlinien
Windows - 32-Bit- oder 64-Bit-Verzeichniserklärung

Ralph Willgoss
quelle
133

Die meisten der vorhandenen Antworten erklären das Wie , aber nur sehr wenige erklären das Warum . Und bevor Sie Code von Fremden im Internet ausführen, insbesondere Code, der Sicherheitsmaßnahmen deaktiviert, sollten Sie genau verstehen, was Sie tun. Hier ist ein bisschen mehr Detail zu diesem Problem.

Auf der TechNet- Seite " Informationen zu Ausführungsrichtlinien" :

Mit Windows PowerShell-Ausführungsrichtlinien können Sie die Bedingungen bestimmen, unter denen Windows PowerShell Konfigurationsdateien lädt und Skripts ausführt.

Die Vorteile, die in PowerShell Basics - Ausführungsrichtlinien und Codesignatur aufgeführt sind , sind:

  • Kontrolle der Ausführung - Kontrollieren Sie die Vertrauensstufe für die Ausführung von Skripten.
  • Command Highjack - Verhindert das Einfügen von Befehlen in meinen Pfad.
  • Identität - Wird das Skript von einem vertrauenswürdigen Entwickler erstellt und signiert und / oder von einem Zertifikat einer vertrauenswürdigen Zertifizierungsstelle signiert?
  • Integrität - Skripte können nicht von Malware oder böswilligen Benutzern geändert werden.

Um Ihre aktuelle Ausführungsrichtlinie zu überprüfen, können Sie ausführen Get-ExecutionPolicy. Aber Sie sind wahrscheinlich hier, weil Sie es ändern möchten.

Dazu führen Sie das Set-ExecutionPolicyCmdlet aus.

Beim Aktualisieren der Ausführungsrichtlinie müssen Sie zwei wichtige Entscheidungen treffen.

Typ der Ausführungsrichtlinie:

  • Restricted - Auf dem System kann kein lokales, entferntes oder heruntergeladenes Skript ausgeführt werden.
  • AllSigned - Alle Skripte, die ausgeführt werden, müssen digital signiert sein.
  • RemoteSigned - Alle Remote-Skripte (UNC) oder heruntergeladenen müssen signiert sein.
  • Unrestricted - Für jede Art von Skript ist keine Signatur erforderlich.

Umfang der neuen Änderung

  • LocalMachine - Die Ausführungsrichtlinie betrifft alle Benutzer des Computers.
  • CurrentUser - Die Ausführungsrichtlinie betrifft nur den aktuellen Benutzer.
  • Process - Die Ausführungsrichtlinie wirkt sich nur auf den aktuellen Windows PowerShell-Prozess aus.

† = Standard

Beispiel : Wenn Sie die Richtlinie nur für den aktuellen Benutzer in RemoteSigned ändern möchten, führen Sie den folgenden Befehl aus:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Hinweis : Um die Ausführungsrichtlinie zu ändern, müssen Sie PowerShell As Adminstrator ausführen . Wenn Sie sich im regulären Modus befinden und versuchen, die Ausführungsrichtlinie zu ändern, wird die folgende Fehlermeldung angezeigt:

Der Zugriff auf den Registrierungsschlüssel 'HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ PowerShell \ 1 \ ShellIds \ Microsoft.PowerShell' wird verweigert. Starten Sie Windows PowerShell mit der Option "Als Administrator ausführen", um die Ausführungsrichtlinie für den Standardbereich (LocalMachine) zu ändern.

Wenn Sie die internen Einschränkungen für Ihre eigenen Skripts verschärfen möchten, die nicht aus dem Internet heruntergeladen wurden (oder zumindest keine UNC-Metadaten enthalten), können Sie die Richtlinie zwingen, nur signierte Skripts auszuführen. Befolgen Sie zum Signieren Ihrer eigenen Skripte die Anweisungen in Scott Hanselmans Artikel zum Signieren von PowerShell-Skripten .

Hinweis : Die meisten Benutzer erhalten diesen Fehler wahrscheinlich, wenn sie Powershell öffnen, da PS beim Start zunächst versucht, Ihr Benutzerprofilskript auszuführen, mit dem Ihre Umgebung so eingerichtet wird, wie Sie es möchten.

Die Datei befindet sich normalerweise in:

%UserProfile%\My Documents\WindowsPowerShell\Microsoft.PowerShellISE_profile.ps1

Sie können den genauen Speicherort ermitteln, indem Sie die Powershell-Variable ausführen

$profile

Wenn das Profil nichts enthält, was Sie interessiert, und Sie nicht mit Ihren Sicherheitseinstellungen herumspielen möchten, können Sie es einfach löschen und Powershell findet nichts, was nicht ausgeführt werden kann.

KyleMit
quelle
8
Ich halte es für wichtig zu beachten, dass die Ausführungsrichtlinie zwar eine Sicherheitsmaßnahme darstellt, jedoch nicht verhindern soll, dass Benutzer PowerShell-Code ausführen. Die Ausführungsrichtlinie soll Ihre Skripte schützen und bestimmen, wer sie geschrieben, geändert oder genehmigt hat, und das ist alles. Es ist trivial, die Ausführungsrichtlinie mit etwas so Einfachem wie zu umgehen Get-Content .\MyFile.ps1 | powershell.exe -NoProfile -.
Bacon Bits
1
-ExecutionPolicy ByPassWas ist angesichts der Existenz überhaupt der Zweck dieser Politik? Soll nur verhindert werden, dass Benutzer versehentlich eine Powershell-Konsole öffnen und ein schädliches Skript ausführen? Könnte der Angreifer nicht einfach eine ausführbare Datei oder ein Batch-Skript verwenden, um dies zu umgehen? Selbst nach dem Lesen von @ BaconBits Kommentar bin ich mir nicht ganz sicher, welches Szenario diese Richtlinie verhindern soll ...
Ajedi32
2
@ Ajedi32 Angenommen, ich habe eine Aufgabe, die ein Skript auf einer Netzwerkfreigabe ausführt. Wenn ich mein Skript aufrufe, möchte ich, dass mein Prozess überprüft, ob das Skript signiert ist. Ich möchte, dass mein Code überprüft, ob das Skript, das ich ausführen werde, der Code ist, dem ich vertraue. Es ist mir egal, ob Sie meinen Code ausführen können. Das Stoppen ist der Job der Zugriffsrechte. Ich möchte nur verhindern, dass Sie mich dazu bringen, Code auszuführen, den ich nicht geschrieben habe. Zugriffsrechte bedeuten, dass das Betriebssystem Sie daran hindert, meinen Code zu ändern, wenn Sie angemeldet sind. Code unterzeichnen und ihre Ausführungspolitik bedeutet , hat mein Skript nicht geändert worden , wenn ich es gehen zu laufen.
Bacon Bits
40

In Windows 7:

Gehen Sie zum Startmenü und suchen Sie nach "Windows PowerShell ISE".

Klicken Sie mit der rechten Maustaste auf die x86-Version und wählen Sie "Als Administrator ausführen".

Im oberen Teil einfügen Set-ExecutionPolicy RemoteSigned; Führen Sie das Skript aus. Wählen Sie "Ja".

Wiederholen Sie diese Schritte auch für die 64-Bit-Version von Powershell ISE (die Nicht-x86-Version).

Ich kläre nur die Schritte, die @Chad Miller angedeutet hat. Danke Chad!

Ryan
quelle
39

Durch Ausführen dieses Befehls vor dem Skript wird auch das folgende Problem behoben:

set-executionpolicy unrestricted
manik sikka
quelle
27
-1 - Befolgen Sie das Prinzip der geringsten Erlaubnis. Stellen Sie die Richtlinie mindestens auf ein, RemoteSignedbevor Sie alle Einschränkungen Ihrer Sicherheitsrichtlinie aufheben. Wenn das nicht funktioniert, überprüfen Sie erneut, was Ihre Schmerzpunkte sind und warum es nicht funktioniert. Sie können unrestrictedals letzten Ausweg festlegen , aber es sollte nicht Ihr Ausgangspunkt sein.
KyleMit
3
Vielen Dank, dass Sie auch auf diese Option hingewiesen haben. Bei allem Respekt vor den Sicherheitsanforderungen für Produktionszwecke stehen in Zeiten, in denen die Nachfrage nach schnellen Prototyping-Fähigkeiten so hoch ist, alle Richtlinien und Sicherheitsmaßnahmen der Erledigung von Aufgaben im Wege.
Tishma
1
In Bezug auf den Kommentar zum Prototyping befürchte ich, dass aus diesem Grund beschissener Code in die Produktion kommt. Natürlich ist dies nur ein triviales Beispiel, aber wenn Sie etwas so triviales während der Entwicklung nicht lösen können, ist es eine Sorge um die Veröffentlichung. Für maßgeschneiderten Code und wenn Sie können, kennen Sie die Zielumgebung - wir setzen den Großteil unserer internen Systeme als Remotesigned.
Trix
33

Wenn Sie sich in einer Umgebung befinden, in der Sie kein Administrator sind, können Sie die Ausführungsrichtlinie nur für Sie festlegen, ohne dass ein Administrator erforderlich ist.

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

oder

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

Sie können alles darüber in der Hilfe lesen.

Help Get-ExecutionPolicy -Full
Help Set-ExecutionPolicy -Full
Micah 'Powershell Ninja'
quelle
Hat in Windows 8 hervorragend Set-ExecutionPolicy Unrestrictedfunktioniert , auch wenn ein Administrator nicht "uneingeschränkt" genug zu sein schien, um tatsächlich zu helfen.
Patridge
1
Ich glaube, was Sie möglicherweise erleben, ist ein Gruppenrichtlinienobjekt oder etwas anderes, das Ihre Einstellung der "LocalMachine" -Ebene von ExecutionPolicy überschreibt. Mit dem Befehl Set-ExecutionPolicy können Sie nicht überschreiben, was in einer Domänenrichtlinie vorhanden ist. Wenn Sie jedoch die Zugriffsebene "CurrentUser" festlegen, haben Sie und nur Sie die angegebene Ausführungsrichtlinie. Dies liegt daran, dass der Computer den CurrentUser nach Ausführungsrichtlinien durchsucht, bevor er die LocalMachine-Einstellung überprüft.
Micah 'Powershell Ninja'
1
Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "Unrestricted" ist die einzige Lösung, die für mich funktioniert hat. Vielen Dank
Paulj
32

RemoteSigned: Alle Skripte, die Sie selbst erstellt haben, werden ausgeführt, und alle aus dem Internet heruntergeladenen Skripte müssen von einem vertrauenswürdigen Herausgeber signiert werden.

OK, ändern Sie die Richtlinie, indem Sie einfach Folgendes eingeben:

Set-ExecutionPolicy RemoteSigned
Jaime
quelle
Wie in anderen Beiträgen empfohlen: Es ist ratsam, "-Scope CurrentUser" für eine sicherere Richtlinie einzuschließen, wenn dies sinnvoll ist.
Clusterdude
32

Wir können den aktuellen Status ExecutionPolicymit dem folgenden Befehl abrufen:

Get-ExecutionPolicy;

Standardmäßig ist es eingeschränkt . Um die Ausführung von PowerShell-Skripten zu ermöglichen, müssen Sie diese ExecutionPolicy entweder als Bypass oder als uneingeschränkt festlegen .

Wir können die Richtlinie für den aktuellen Benutzer als Bypassoder Unrestrictedmithilfe eines der folgenden PowerShell-Befehle festlegen :

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

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

Die uneingeschränkte Richtlinie lädt alle Konfigurationsdateien und führt alle Skripts aus. Wenn Sie ein nicht signiertes Skript ausführen, das aus dem Internet heruntergeladen wurde, werden Sie vor der Ausführung zur Erlaubnis aufgefordert.

Während in der Bypass- Richtlinie nichts blockiert ist und während der Skriptausführung keine Warnungen oder Eingabeaufforderungen angezeigt werden. Bypass ExecutionPolicyist entspannter als Unrestricted.

Pratik Patil
quelle
4
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Bypass -Force; AKA schnelle und schmutzige Möglichkeit, VS2015 anzuweisen, sich nicht mehr zu beschweren und mein blutiges Skript auszuführen. Vielen Dank. Lebensretter.
Eon
1
Die nachfolgenden Semikolons an den Enden Ihrer Befehle sind überflüssig.
Bill_Stewart
23

Ich verwende Windows 10 und konnte keinen Befehl ausführen. Der einzige Befehl, der mir einige Hinweise gab, war folgender:

[x64]

  1. Öffnen Sie C: \ Windows \ SysWOW64 \ cmd.exe [als Administrator]
  2. Führen Sie den Befehl> Powershell Set-ExecutionPolicy Unrestricted aus

Aber das hat nicht funktioniert. Es war begrenzt. Wahrscheinlich neue Sicherheitsrichtlinien für Windows10. Ich hatte diesen Fehler:

Set-ExecutionPolicy: Windows PowerShell hat Ihre Ausführungsrichtlinie erfolgreich aktualisiert, die Einstellung wird jedoch von einer Richtlinie überschrieben, die in einem bestimmten Bereich definiert ist. Aufgrund der Überschreibung behält Ihre Shell ihre derzeitige effektive Ausführungsrichtlinie von ...

Also habe ich einen anderen Weg gefunden ( Lösung ):

  1. Öffnen Sie Run Command / Console ( Win+ R)
  2. Geben Sie Folgendes ein : gpedit.msc ( Gruppenrichtlinien- Editor)
  3. Navigieren Sie zu Lokale Computerrichtlinie -> Computerkonfiguration -> Administrative Vorlagen -> Windows-Komponenten -> Windows Powershell .
  4. Aktivieren Sie " Skriptausführung aktivieren "
  5. Stellen Sie die Richtlinie nach Bedarf ein. Ich habe meine auf " Alle Skripte zulassen " gesetzt.

Öffnen Sie jetzt PowerShell und genießen Sie;)

Hugocabral
quelle
Handelt es sich um eine eigenständige Installation, oder sind Sie mit einer Arbeitsgruppe oder Domäne verbunden?
MEMark
Warum cmd öffnen, um es zu tun? Öffnen Sie einfach ISE (als Administrator) und geben SieSet-ExecutionPolicy RemoteSigned
Kolob Canyon ein
OMG das hat endlich meine win10 Box repariert, @kolob Set-Execution Policy ist nicht genug
xer0x
Sie sollten nicht verwenden Unrestricted. Es ist besser zu verwendenRemoteSigned
Kolob Canyon
@ xer0x es sollte so lange dauern, wie Sie Powershell als Administrator ausführen
Kolob Canyon
10

Das Festlegen der Ausführungsrichtlinie ist umgebungsspezifisch. Wenn Sie versuchen, ein Skript von der laufenden x86- ISE aus auszuführen , müssen Sie die Ausführungsrichtlinie mithilfe der x86-PowerShell festlegen. Wenn Sie die 64-Bit-ISE ausführen, müssen Sie die Richtlinie ebenfalls mit der 64-Bit-PowerShell festlegen.

ScriptAholic
quelle
10

Win+ Rund geben Sie den Befehl Kopieren und Einfügen ein und drücken Sie OK:

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

Und führen Sie Ihr Skript aus.

Setzen Sie dann Änderungen wie folgt zurück:

powershell Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "AllSigned"
Qamar
quelle
10

Sie können dies auch mit dem folgenden Befehl umgehen:

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

Sie können auch diesen Artikel von Scott Sutherland lesen, in dem 15 verschiedene Möglichkeiten zum Umgehen der PowerShell erläutert werden, Set-ExecutionPolicywenn Sie keine Administratorrechte haben:

15 Möglichkeiten zum Umgehen der PowerShell-Ausführungsrichtlinie

Alexander Sinno
quelle
Dies ist wahrscheinlich eine der überzeugendsten Anleitungen zur Fehlerbehebung und zum Verständnis dieser Einschränkung.
Osvaldo Mercado
5
  1. Öffnen Sie PowerShell als Administrator und führen Sie Set-ExecutionPolicy -Scope CurrentUser aus
  2. Stellen Sie RemoteSigned bereit und drücken Sie die Eingabetaste
  3. Führen Sie Set-ExecutionPolicy -Scope CurrentUser aus
  4. Geben Sie Uneingeschränkt ein und drücken Sie die Eingabetaste
Ramanujam Allam
quelle
5

Sie können dies versuchen und die Option "Alle" auswählen

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
Taqi Raza Khan
quelle
3

Im PowerShell ISE- Editor habe ich festgestellt, dass das Ausführen der folgenden Zeile zuerst Skripte zulässt.

Set-ExecutionPolicy RemoteSigned -Scope Process
David Douglas
quelle
2

In PowerShell 2.0 war die Ausführungsrichtlinie standardmäßig deaktiviert.

Von da an hat das PowerShell-Team viele Verbesserungen vorgenommen und ist zuversichtlich, dass Benutzer beim Ausführen von Skripten nicht viel kaputt machen werden. Ab PowerShell 4.0 ist es standardmäßig aktiviert.

Geben Sie in Ihrem Fall Set-ExecutionPolicy RemoteSignedüber die PowerShell-Konsole ein und sagen Sie "Ja".

Adil Arif
quelle
2

Ich hatte heute das gleiche Problem. Die 64-Bit-Ausführungsrichtlinie war nicht eingeschränkt, während die 32-Bit-Richtlinie eingeschränkt war.

So ändern Sie nur die 32-Bit-Richtlinie remote:

Invoke-Command -ComputerName $servername -ConfigurationName Microsoft.PowerShell32 -scriptblock {Set-ExecutionPolicy unrestricted}
rko281
quelle
2

Gehen Sie zum Registrierungspfad HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShellund setzen Sie ExecutionPolicyauf RemoteSigned.

sunish surendran.k
quelle
1
1. Öffnen Sie PowerShell als Administrator und führen Sie Set-ExecutionPolicy -Scope CurrentUser aus. 2. Stellen Sie RemoteSigned bereit und drücken Sie die Eingabetaste. 3. Führen Sie Set-ExecutionPolicy -Scope CurrentUser aus. 4. Stellen Sie Uneingeschränkt bereit und drücken Sie die Eingabetaste
Ramanujam Allam
2

Ich erhalte eine weitere Warnung, wenn ich versuche zu rennen Set-ExecutionPolicy RemoteSigned

Ich habe mit diesen Befehlen gelöst

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

Set-ExecutionPolicy "RemoteSigned" -Scope CurrentUser -Confirm:$false
George C.
quelle
1

Wenn Sie hier sind, weil Sie es mit Ruby oder Chef ausführen und die Systemausführung verwenden, führen Sie Folgendes aus:

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

Dieser Befehl dient zum Abrufen des Ordners "MyDocuments".

-ExecutionPolicy Unrestricted macht den Trick.

Ich hoffe es ist hilfreich für jemand anderen.

JGutierrezC
quelle
Sollte das beiliegende `` wirklich da sein?
Peter Mortensen
1

Mehrere Antworten verweisen auf die Ausführungsrichtlinie. Einige Dinge erfordern jedoch auch "Runas Administrator". Dies ist insofern am sichersten, als die Ausführungsrichtlinie nicht dauerhaft geändert wird und die Administratorbeschränkungen überschritten werden können. Mit Schedtask verwenden, um einen Stapel zu starten mit:

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

von Jack Edmonds oben und Peter Mortensen / Dhana von post Wie wird eine Anwendung als "Als Administrator ausführen" an der Eingabeaufforderung ausgeführt?

Kirt Carson
quelle
1

Ich fand, dass diese Leitung für einen meiner Windows Server 2008 R2-Server am besten funktioniert . Einige andere hatten keine Probleme ohne diese Zeile in meinen PowerShell-Skripten:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Force -Scope Process
WIlliamT
quelle
1

Öffnen Sie die Powershell-Konsole als Administrator und legen Sie die Ausführungsrichtlinie fest

Set-ExecutionPolicy -ExecutionPolicy Remotesigned 
lokeshbandharapu
quelle
0

Sie können es auf besondere Weise umgehen:

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

Es leitet den Inhalt des Powershell-Skripts an Powershell.exe weiter und führt es unter Umgehung der Ausführungsrichtlinie aus.

Wasif Hasan
quelle
0

Dies löste mein Problem

Öffnen Sie den Windows- PowerShellBefehl und führen Sie die folgende Abfrage aus, um sie zu ändernExecutionPolicy

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Wenn Sie nach bestätigten Änderungen gefragt werden, drücken Sie 'Y' und drücken Sie die Eingabetaste.

Arvind Chourasiya
quelle
0

Set-ExecutionPolicy RemoteSignedBefehl ausführen

maxxi
quelle
0
  1. Open Powershell als Administration
Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "RemoteSigned"

Verwenden Sie diesen Befehl

MD SHAYON
quelle
-1

Öffnen Sie cmd anstelle von Powershell. Das hat mir geholfen ...

Jelmer Jellema
quelle
-2

Öffnen Sie das PowerShell-Fenster als Administrator . Es wird klappen.

Suganthan Raj
quelle
Es hat nicht funktioniert. Das Ausführen von Powershell Set-ExecutionPolicy RemoteSigned hat jedoch funktioniert.
Thronk