Ich versuche a cmd Datei, die a aufruft Power ShellSkript 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
ausPower ShellIch komme Unrestricted
zurü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.ps1
kann nicht geladen werden, da die Ausführung von Skripten auf diesem System deaktiviert ist.get-help about_signing
Weitere 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?
Get-ExecutionPolicy -List
.Antworten:
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:
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:
quelle
Set-ExecutionPolicy Restricted
Dies 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 Edmonds
sieht für mich sicherer aus:powershell -ExecutionPolicy ByPass -File script.ps1
Get-ExecutionPolicy -List
halfen mir, die verschiedenen Bereiche zu erkennen. Das cmdGet-ExecutionPolicy
zeigt nicht alle Bereiche anImport-Module SQLPS
, mit denen jetzt gearbeitet wird geändert Richtlinien wie folgt:{Undefined- Process,MachinePolicy,UserPolicy,}; {RemoteSigned- CurrentUser, LocalMachine}
.Sie können diese Richtlinie für eine einzelne Datei umgehen, indem Sie sie
-ExecutionPolicy Bypass
beim Ausführen von PowerShell hinzufügenquelle
%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy ByPass
meiner Taskleiste erstellt.type script.ps1 | powershell -
funktioniert jedoch..ps1
und versehentlich etwas ausführen , was sie nicht wollten. Dies würde mit.bat
Dateien passierenIch hatte ein ähnliches Problem und stellte fest, dass
cmd
unter 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 aus
powershell Set-ExecutionPolicy RemoteSigned
x64 (64 Bit)
Öffnen
C:\Windows\system32\cmd.exe
Führen Sie den Befehl aus
powershell Set-ExecutionPolicy RemoteSigned
Sie können den Modus mit überprüfen
echo %PROCESSOR_ARCHITECTURE%
[Environment]::Is64BitProcess
Referenzen:
MSDN - Windows PowerShell-Ausführungsrichtlinien
Windows - 32-Bit- oder 64-Bit-Verzeichniserklärung
quelle
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" :
Die Vorteile, die in PowerShell Basics - Ausführungsrichtlinien und Codesignatur aufgeführt sind , sind:
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-ExecutionPolicy
Cmdlet 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:
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:
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:
Sie können den genauen Speicherort ermitteln, indem Sie die Powershell-Variable ausführen
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.
quelle
Get-Content .\MyFile.ps1 | powershell.exe -NoProfile -
.-ExecutionPolicy ByPass
Was 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 ...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!
quelle
Durch Ausführen dieses Befehls vor dem Skript wird auch das folgende Problem behoben:
quelle
RemoteSigned
bevor 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önnenunrestricted
als letzten Ausweg festlegen , aber es sollte nicht Ihr Ausgangspunkt sein.Remotesigned
.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.
oder
Sie können alles darüber in der Hilfe lesen.
quelle
Set-ExecutionPolicy Unrestricted
funktioniert , auch wenn ein Administrator nicht "uneingeschränkt" genug zu sein schien, um tatsächlich zu helfen.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:
quelle
Wir können den aktuellen Status
ExecutionPolicy
mit dem folgenden Befehl abrufen: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
Bypass
oderUnrestricted
mithilfe eines der folgenden PowerShell-Befehle festlegen :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
ExecutionPolicy
ist entspannter alsUnrestricted
.quelle
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.Ich verwende Windows 10 und konnte keinen Befehl ausführen. Der einzige Befehl, der mir einige Hinweise gab, war folgender:
[x64]
Aber das hat nicht funktioniert. Es war begrenzt. Wahrscheinlich neue Sicherheitsrichtlinien für Windows10. Ich hatte diesen Fehler:
Also habe ich einen anderen Weg gefunden ( Lösung ):
Öffnen Sie jetzt PowerShell und genießen Sie;)
quelle
Set-ExecutionPolicy RemoteSigned
Unrestricted
. Es ist besser zu verwendenRemoteSigned
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.
quelle
Win+ Rund geben Sie den Befehl Kopieren und Einfügen ein und drücken Sie OK:
Und führen Sie Ihr Skript aus.
Setzen Sie dann Änderungen wie folgt zurück:
quelle
Sie können dies auch mit dem folgenden Befehl umgehen:
Sie können auch diesen Artikel von Scott Sutherland lesen, in dem 15 verschiedene Möglichkeiten zum Umgehen der PowerShell erläutert werden,
Set-ExecutionPolicy
wenn Sie keine Administratorrechte haben:15 Möglichkeiten zum Umgehen der PowerShell-Ausführungsrichtlinie
quelle
quelle
Sie können dies versuchen und die Option "Alle" auswählen
quelle
Im PowerShell ISE- Editor habe ich festgestellt, dass das Ausführen der folgenden Zeile zuerst Skripte zulässt.
quelle
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".quelle
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:
quelle
Gehen Sie zum Registrierungspfad
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell
und setzen SieExecutionPolicy
aufRemoteSigned
.quelle
Ich erhalte eine weitere Warnung, wenn ich versuche zu rennen
Set-ExecutionPolicy RemoteSigned
Ich habe mit diesen Befehlen gelöst
quelle
Wenn Sie hier sind, weil Sie es mit Ruby oder Chef ausführen und die Systemausführung verwenden, führen Sie Folgendes aus:
Dieser Befehl dient zum Abrufen des Ordners "MyDocuments".
-ExecutionPolicy Unrestricted
macht den Trick.Ich hoffe es ist hilfreich für jemand anderen.
quelle
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:
von Jack Edmonds oben und Peter Mortensen / Dhana von post Wie wird eine Anwendung als "Als Administrator ausführen" an der Eingabeaufforderung ausgeführt?
quelle
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:
quelle
Öffnen Sie die Powershell-Konsole als Administrator und legen Sie die Ausführungsrichtlinie fest
quelle
Sie können es auf besondere Weise umgehen:
Es leitet den Inhalt des Powershell-Skripts an Powershell.exe weiter und führt es unter Umgehung der Ausführungsrichtlinie aus.
quelle
Dies löste mein Problem
Öffnen Sie den Windows-
PowerShell
Befehl 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.
quelle
Set-ExecutionPolicy RemoteSigned
Befehl ausführenquelle
Verwenden Sie diesen Befehl
quelle
Öffnen Sie cmd anstelle von Powershell. Das hat mir geholfen ...
quelle
Öffnen Sie das PowerShell-Fenster als Administrator . Es wird klappen.
quelle