PowerShell sagt "Ausführung von Skripts ist auf diesem system deaktiviert ist."
Ich versuche zu laufen cmd - Datei aufruft, powershell - Skript aus cmd.exe
, und ich bin immer die folgende Fehlermeldung:
Management_Install.ps1
kann nicht geladen werden, da die Ausführung von Skripts ist auf diesem system deaktiviert ist.
Habe ich
Set-ExecutionPolicy -ExecutionPolicy Unrestricted
und wenn ich laufen Get-ExecutionPolicy
von powershell, bekomme ich 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...
Datei
C:\Projects\Microsoft.Practices.ESB\Source\Samples\Management Portal\Install\Scripts\Management_Install.ps1
kann nicht geladen werden, da die Ausführung von Skripts ist auf diesem system deaktiviert ist. Bitte finden Sie unter "get-help about_signing
" für mehr details.At line:1 char: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 ist Windows Server 2008R2.
Was mache ich falsch?
Hab an die Unterseite von Ihr, der Fehler war irreführend, das problem war in meinem powershell-Skript, danke!
Seine erwähnenswert, dass die Ausführungsrichtlinie trägt mehrere Bereiche, und ausführen von PowerShell in verschiedenen Möglichkeiten bekommen können Sie unterschiedliche Richtlinien. Zum anzeigen der Liste der Richtlinien, führen
Get-ExecutionPolicy -List
.
InformationsquelleAutor Conor | 2010-10-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie Windows Server 2008 R2, dann gibt es eine x64 und x86 version von PowerShell-beide haben Ihre ausführungsrichtlinien festgelegt. Haben Sie die Ausführungsrichtlinie auf beiden hosts?
Als Administrator, können Sie die Ausführungsrichtlinie bei Eingabe dieser in Ihre PowerShell-Fenster:
Weitere Informationen finden Sie unter Mit dem Cmdlet Set-ExecutionPolicy.
Set-ExecutionPolicy Restricted
scheint der Weg, um es rückgängig machen, wenn Sie wollen, um die Berechtigungen zurück, wie Sie waren: technet.microsoft.com/en-us/library/ee176961.aspx. Die temporäre bypass-Methode von@Jack Edmonds
sieht sicherer für mich:powershell -ExecutionPolicy ByPass -File script.ps1
Für eine sichere Politik, Rahmen ist es dem aktuellen Benutzer: Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
Set-ExecutionPolicy RemoteSigned nicht die erste Zeile in Ihrem Skript. Wenn es ist, markieren Sie es und führen Sie nur ausgewählt, ZUNÄCHST vor dem ausführen des rest Ihres Skripts.
Stieß ich auf eine ähnliche Frage auf der SF site, "Powershell-Ausführungsrichtlinie, die in SQL Server" fragte Okt 10 '14. Die Antworten gibt es im Lieferumfang enthalten
Get-ExecutionPolicy -List
was mir geholfen zu sehen, die verschiedenen Bereiche. Die cmdGet-ExecutionPolicy
nicht alle Bereiche.Import-Module SQLPS
ist nun die Arbeit mit policies wie folgt geändert:{Undefined- Process,MachinePolicy,UserPolicy,}; {RemoteSigned- CurrentUser, LocalMachine}
.Wenn ich das mache, gilt die änderung nur für die Dauer der aktuellen PowerShell? Oder ist es größer?
InformationsquelleAutor Chad Miller
Umgehen kann man diese Politik durch hinzufügen
-ExecutionPolicy ByPass
beim ausführen von PowerShell -%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy ByPass
auf meiner Taskleiste.Beachten Sie, dass Microsoft Technet stilisiert es als "Bypass", nicht "Umgehen". Siehe: technet.microsoft.com/nl-nl/library/hh849812.aspx
Dies funktioniert nicht für mich arbeiten, bekomme ich die gleiche Erlaubnis verweigert, als ob ich nannte es normal. Ruft ein ps1 aus .bat zu tun
type script.ps1 | powershell -
funktioniert aber.Der Zweck und der Ausführung der Politik ist die Vermeidung von Doppel-Klick auf eine
.ps1
und versehentlich läuft etwas, was Sie nicht bedeuten. Dies würde geschehen mit.bat
DateienInformationsquelleAutor Jack Edmonds
Ich hatte ein ähnliches Problem und festgestellt, dass die Standard -
cmd
auf Windows Server 2012, läuft die x64.Für Windows 7, Windows 8, Windows 10, Windows Server 2008 R2 oder Windows Server 2012, führen Sie die folgenden Befehle als Administrator:
x86 (32 bit)
Öffnen
C:\Windows\SysWOW64\cmd.exe
Führen Sie den Befehl
powershell Set-ExecutionPolicy RemoteSigned
x64 (64 bit)
Öffnen
C:\Windows\system32\cmd.exe
Führen Sie den Befehl
powershell Set-ExecutionPolicy RemoteSigned
Können Sie den check-Modus mit
echo %PROCESSOR_ARCHITECTURE%
[Environment]::Is64BitProcess
Referenzen:
MSDN - ausführungsrichtlinien von Windows PowerShell
Windows - 32-bit vs 64-bit-Verzeichnis-Erklärung
InformationsquelleAutor Ralph Willgoss
Meisten der bisherigen Antworten, die erklären, die Wie, aber nur sehr wenige erklären, die Warum. Und bevor Sie gehen, um der Ausführung von code aus fremden über das Internet, vor allem code, der deaktiviert die Sicherheitsmaßnahmen, die Sie sollten verstehen, genau das, was du tust. Hier ist also ein wenig genauer auf dieses problem.
Aus der TechNet Über Die Ausführungsgrundsätze Seite:
Die Vorteile, die aufgezählt, die von PowerShell Grundlagen - Execution-Policy und Code Signing, sind:
Überprüfen Sie Ihre aktuelle Ausführungsrichtlinie, die Sie ausführen können,
Get-ExecutionPolicy -
. Aber du bist wahrscheinlich hier, weil Sie wollen, es zu ändern.Zu tun, so führen Sie den
Set-ExecutionPolicy
cmdlet.Müssen Sie zwei wichtige Entscheidungen zu treffen, wenn die Aktualisierung der execution policy.
Ausführungsrichtlinie Typ:
Restricted
† - Kein Skript entweder lokal, remote oder heruntergeladen werden kann auf dem system ausgeführt.AllSigned
- Alle Skripts, die ran müssen Digital signiert.RemoteSigned
- Alle remote-scripts (UNC) oder heruntergeladen werden, müssen signiert werden.Unrestricted
- Keine Signatur für jede Art von Skript ist erforderlich.Umfang der neuen Ändern
LocalMachine
† - Die Ausführungsrichtlinie wirkt sich auf alle Benutzer des Computers.CurrentUser
- Die Ausführungsrichtlinie wirkt sich auf nur den aktuellen Benutzer.Process
- Die Ausführungsrichtlinie wirkt sich auf nur den aktuellen Windows PowerShell-Prozess.† = Standard
Zum Beispiel: wenn Sie wollen das ändern der policy auf "RemoteSigned" festgelegt, der nur für CurrentUser, würden Sie den folgenden Befehl ausführen:
Hinweis: um die Ausführungsrichtlinie ändern, müssen Sie PowerShell Als Administrator.
Wenn Sie im normal-Modus und versuchen Sie die Ausführungsrichtlinie ändern, erhalten Sie die folgende Fehlermeldung:
Wenn Sie möchten, dass eine Verschärfung der internen Beschränkungen auf Ihre eigenen Skripte, die noch nicht heruntergeladen wurden, aus dem Internet (oder zumindest nicht enthalten UNC-Metadaten), können Sie erzwingen, dass die Politik nur unterzeichnet sripts. Signieren Sie Ihre eigenen Skripte, befolgen Sie die Anweisungen auf Scott Hanselman ' s Artikel über Signieren Von PowerShell-Skripts.
Hinweis: die Meisten Menschen sind wahrscheinlich diese Fehlermeldung erhalten, wenn Sie öffnen Sie Powershell, weil die erste Sache, die PS versucht zu tun, wenn Sie gestartet ist, führen Sie Ihre Benutzer-Profil-Skript, das festlegt, bis Ihre Umgebung ganz wie du willst.
Die Datei befindet sich normalerweise in:
Finden Sie die genaue Lage durch ausführen des powershell-variable
Wenn es nichts, dass Sie interessieren, im Profil, und wollen nicht zu viel Aufhebens mit Ihren Sicherheits-Einstellungen, können Sie Sie einfach löschen und powershell wird nichts finden, dass es nicht auszuführen.
Get-Content .\MyFile.ps1 | powershell.exe -NoProfile -
.Angesichts der Existenz von
-ExecutionPolicy ByPass
obwohl, was ist der Zweck dieser Richtlinie überhaupt? Ist es nur um zu verhindern, dass Benutzer versehentlich öffnen einer powershell-Konsole und ausführen eines bösartigen Skript? Nicht die Angreifer benutzen Sie einfach eine ausführbare Datei oder ein batch-Skript, wenn Sie wollte, dies zu umgehen? Auch nach der Lektüre @BaconBits Kommentar ich bin mir nicht ganz sicher, was Szenario diese Richtlinie soll verhindern, dass...Sagen, ich habe eine Aufgabe, läuft ein Skript auf einer Netzwerkfreigabe. Wenn ich rufe mein Skript, ich will, dass mein Prozess, um sicherzustellen, dass das Skript signiert ist. Ich möchte meinen code zu überprüfen, dass das Skript werde ich zu laufen, ist der code, den ich Vertrauen, um zu laufen. Ich kümmern sich nicht wenn Sie ausführen können, mein code. Stoppen, die Zugriffsrechte " job. Ich will einfach nur, um zu verhindern, dass Sie sich von mir ausführen von code, den ich nicht geschrieben habe. Umgangsrecht bedeutet, das Betriebssystem verhindert, dass Sie ändern mein code, wenn Sie angemeldet sind. Code-signieren und execution policy bedeutet mein script noch nicht geändert wurde, wenn ich gehen, um es auszuführen.
InformationsquelleAutor KyleMit
In Windows 7:
Gehen Sie zu Start-Menü und suchen Sie nach "Windows PowerShell ISE".
Rechts klicken Sie auf die x 86-version und wählen Sie "als administrator Ausführen".
In den oberen Teil einfügen
Set-ExecutionPolicy RemoteSigned
; führen Sie das Skript. Wählen Sie "Ja".Wiederholen Sie diese Schritte für die 64-bit version der Powershell ISE zu verwenden (die nicht x 86-version).
Ich bin nur der Klärung der Schritte, die @Chad Miller angedeutet. Danke, Chad!
InformationsquelleAutor Ryan
Auch dieser Befehl ausgeführt wird, bevor das Skript löst auch das Problem:
RemoteSigned
vor dem entfernen alle Einschränkungen, die auf Ihre Sicherheits-policy. Wenn das nicht funktioniert, dann neu zu bewerten, was Ihre Schwachstellen sind und warum es nicht funktioniert. Sie könnenunrestricted
als letzten Ausweg, aber es sollte nicht Ihr Ausgangspunkt.Vielen Dank für den Hinweis auf diese option auch. Mit allem Respekt, um Sicherheitsanforderungen für die Erzeugung genutzt werden, in der Zeit, als Rapid-prototyping-Fähigkeit, die Nachfrage ist so hoch, dass alle Richtlinien und Sicherheit wirklich in den Weg, um die Sachen erledigt werden.
Zu der Bemerkung re prototyping, fürchte ich, dass dies ist, warum crappy-code wird in die Produktion. Natürlich ist dies nur ein triviales Beispiel, aber wenn Sie nicht lösen können, etwas so trivial, während der Entwicklung, es ist eine Sorge, die für die Freigabe. Auch, für Sie maßgeschneiderten code, und wenn Sie können, wissen die Zielumgebung, - wir setzen den Großteil unserer internen Systeme wie
Remotesigned
.InformationsquelleAutor manik sikka
Wenn Sie in einer Umgebung, wo Sie kein administrator sind, können Sie die Ausführungsrichtlinie für Sie, und es wird nicht die Administratorrechte erfordern.
oder
Können Sie alles darüber Lesen Sie in der Hilfe-Eintrag.
Set-ExecutionPolicy Unrestricted
als admin offenbar nicht zu "unrestrict" genug, um tatsächlich helfen.Ich glaube, was können Sie erleben, ist eine GPO, oder sonst etwas, überschreiben die Einstellungen des "LocalMachine" ExecutionPolicy". Sie können nicht überschreiben, was eine Domain Policy hat, mit dem Set-ExecutionPolicy-Befehl. Allerdings, aber die Einstellung der "CurrentUser" Zugriffsebene, die Sie und nur Sie haben die festgelegte Ausführungsrichtlinie. Dies ist, weil der computer schaut auf die CurrentUser-für Ausführungsrichtlinie vor sieht es bei den "LocalMachine" - Einstellung.
Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "Unrestricted" ist die einzige Lösung, die für mich gearbeitet. Danke
InformationsquelleAutor Micah 'Powershell Ninja'
RemoteSigned: alle Skripts, die Sie selbst erstellt haben, ausgeführt werden und alle Skripte aus dem Internet heruntergeladen werden müssen von einem vertrauenswürdigen Herausgeber signiert.
OK, ändern Sie die Richtlinie, indem Sie einfach Folgendes eingeben:
InformationsquelleAutor Jaime
Können wir den status des aktuellen
ExecutionPolicy
indem Sie den folgenden Befehl ein:Standardmäßig ist es Eingeschränkt. Zu ermöglichen die Ausführung von PowerShell-Skripts, die wir benötigen, um diese ExecutionPolicy entweder als Bypass oder Uneingeschränkte.
Können wir die Politik für den Aktuellen Benutzer als
Bypass
oderUnrestricted
durch die Verwendung einer der im folgenden PowerShell-Befehle:Uneingeschränkte Politik lädt alle Konfigurationsdateien und alle Skripts werden ausgeführt. Wenn Sie ein nicht signiertes Skript auszuführen, dass die aus dem Internet heruntergeladen wurde, werden Sie aufgefordert, vor der Ausführung zur Genehmigung.
In der Erwägung, dass in Bypass Politik ist nichts gesperrt und es werden keine Warnungen oder Eingabeaufforderungen während der Skript-Ausführung. Bypass
ExecutionPolicy
ist entspannter alsUnrestricted
.Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Bypass -Force;
AKA quick-and-dirty Weg, zu sagen, VS2015 zu jammern und run my bloody Skript. danke. Lebensretter.Der nachfolgende Semikolons an den enden der Befehle sind überflüssig.
InformationsquelleAutor Pratik Patil
Ich bin mit Windows 10 und war nicht in der Lage, jeden Befehl ausführen. Der einzige Befehl, der gab mir einige Hinweise, war dies:
[x64]
Aber das hat nicht funktioniert. Es war begrenzt. Wahrscheinlich neue Sicherheits-Richtlinien für Windows10. Ich hatte diesen Fehler:
Also habe ich einen anderen Weg gefunden (Lösung):
Nun öffnen Sie PowerShell und genießen 😉
Warum öffnen cmd ein, um es zu tun? Öffnen Sie einfach ISE (als admin) und geben Sie
Set-ExecutionPolicy RemoteSigned
OMG das endlich meine Feste win10-box, @kolob "set-executionpolicy" ist nicht genug
Sie sollten nicht über
Unrestricted
. Es ist besser der Praxis zum EinsatzRemoteSigned
es sollte so lange wie führen Sie powershell als administrator
InformationsquelleAutor hugocabral
Einstellung der Ausführungsrichtlinie ist Umwelt-spezifisch. Wenn Sie versuchen, führen Sie ein Skript aus, das ausgeführt x86 ISE müssen Sie die x86 PowerShell, um die Ausführungsrichtlinie. Ebenso, wenn Sie mit der 64-bit-ISE-Sie haben die Politik mit der 64-bit-PowerShell.
InformationsquelleAutor ScriptAholic
Gewinnen + R und geben Sie die Kopie einfügen " - Befehl und drücken Sie OK:
Und führen Sie Ihr Skript.
Dann wieder änderungen, wie:
InformationsquelleAutor Qamar
Kann man auch umgehen dies, indem Sie den folgenden Befehl ein:
Lesen Sie auch diese Artikel von Scott Sutherland erklärt, dass 15 verschiedene Möglichkeiten, um die umgehen die PowerShell
Set-ExecutionPolicy
wenn Sie nicht über Administratorrechte verfügen:15 Möglichkeiten, um die Umgehen die PowerShell-Ausführungsrichtlinie
InformationsquelleAutor Alexander Sinno
InformationsquelleAutor Ramanujam Allam
In der PowerShell ISE editor habe ich gefunden, läuft die folgende Zeile erste erlaubte Skripte.
InformationsquelleAutor David Douglas
In der PowerShell 2.0, die Ausführungsrichtlinie festgelegt wurde standardmäßig deaktiviert.
Ab dann die PowerShell team hat eine Menge Verbesserungen, und Sie sind zuversichtlich, dass die Benutzer nicht zu brechen Dinge viel während der Ausführung von scripts. Also von PowerShell 4.0 weiter, es ist standardmäßig aktiviert.
In Ihrem Fall, geben Sie
Set-ExecutionPolicy RemoteSigned
von der PowerShell Konsole und sagen ja.InformationsquelleAutor Adil Arif
Gehen Sie zu dem registry-Pfad
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell
- und set -ExecutionPolicy
zuRemoteSigned
.InformationsquelleAutor sunish surendran.k
Wenn du hier bist, da läuft es mit Ruby oder Koch und mithilfe von ` system-Ausführung, Ausführung wie folgt:
Dieser Befehl ist für immer "Eigenedateien" - Ordner.
-ExecutionPolicy Unrestricted
funktioniert der trick.Ich hoffe, es ist hilfreich für jemand anderes.
InformationsquelleAutor JGutierrezC
Mehrere Antworten Punkt und der Ausführung der Politik. Aber einige Dinge erfordern "runas administrator" auch. Dies ist die sicherste Methode, dass es keine dauerhafte Veränderung Ausführungsrichtlinie, und vorbei administrator Einschränkung. Verwenden Sie mit schedtask zum starten ein batch mit:
sowohl Jack Edmonds oben, und Peter Mortensen /Dhana post Wie, um eine Anwendung ausführen als "als administrator ausführen" aus der Eingabeaufforderung?
InformationsquelleAutor Kirt Carson
Fand ich diese Zeile gearbeitet am besten für einen meiner Windows Server 2008 R2-Servern. Ein paar andere hatten keine Probleme ohne diese Zeile in meiner PowerShell-Skripts:
InformationsquelleAutor WIlliamT
Ich hatte das gleiche problem heute. 64-bit-Ausführung-Politik war unbeschränkt, während die 32-bit beschränkt war.
Hier ist, wie zu ändern, nur die 32-bit-Richtlinie aus der Ferne:
InformationsquelleAutor rko281
Öffnen Sie das PowerShell-Fenster als Administrator. Wird es funktionieren.
InformationsquelleAutor Suganthan Raj