Frage PowerShell sagt, dass die Ausführung von Skripten auf diesem System deaktiviert ist.


Ich versuche, eine .cmd-Datei auszuführen, die ein PowerShell-Skript von der Eingabeaufforderung aufruft, und ich erhalte den folgenden Fehler:

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

Ich bin gerannt set-executionpolicy unrestricted und wenn ich renne get-executionpolicy von PowerShell bekomme ich unrestricted zurück.

// Ausgabe von Powershell

PS C: \ Benutzer \ Administrator> get-executionpolicy

Uneingeschränkt

// Ausgabe von DOS

C: \ Projekte \ Microsoft.Practices.ESB \ Source \ Samples \ Management Portal \ Install \ Scr

xpices> powershell. \ Management_Install.ps1 1

WARNUNG: Ausführen von x86 PowerShell ...

Datei C: \ Projects \ Microsoft.Practices.ESB \ Source \ Samples \ Verwaltungsportal \ Install \ Scripts \ Management_Install.ps1 kann nicht geladen werden, da die Ausführung von Skripten auf diesem System deaktiviert ist. Weitere Informationen finden Sie unter "get-help about_signing".

In Zeile: 1 Zeichen: 25

  • . \ Management_Install.ps1 <<<< 1

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

    • FullyQualifiedErrorId: RuntimeException

C: \ Projekte \ Microsoft.Practices.ESB \ Source \ Samples \ Verwaltungsportal \ Install \ Scripts> Pause

Drücken Sie eine beliebige Taste, um fortzufahren . . .

Das System ist Windows Server 2008 R2.

Was mache ich falsch?


1280
2017-10-27 21:39


Ursprung


Antworten:


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

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

Set-ExecutionPolicy RemoteSigned

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


1694
2017-10-28 01:16



Sie können diese Richtlinie umgehen, indem Sie hinzufügen -ExecutionPolicy ByPass beim Ausführen von PowerShell

powershell -ExecutionPolicy ByPass -File script.ps1

541
2018-02-06 21:28



Ich hatte ein ähnliches Problem und bemerkte, dass der Standard cmd auf Windows Server 2012, lief die x64 one.

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

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 verwenden

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

Verweise:
MSDN - Windows PowerShell-Ausführungsrichtlinien
Windows - 32 Bit gegenüber 64 Bit Verzeichnis Erklärung


108
2017-08-30 13:10



Die meisten der vorhandenen Antworten erklären die Wie, aber 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. Also hier ist ein bisschen mehr Details zu diesem Problem.

Vom TechNet Informationen zur Seite Ausführungsrichtlinien:

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

Deren Vorteile, wie sie von PowerShell-Grundlagen - Ausführungsrichtlinien und Code-Signierung, sind:

  • Kontrolle der Ausführung - Steuern Sie die Vertrauenswürdigkeit für die Ausführung von Skripten.
  • Befehl Hochjack - Verhindere die Injektion von Befehlen in meinem Pfad.
  • Identität - Wird das Skript von einem vertrauenswürdigen Entwickler erstellt und signiert und / oder mit einem Zertifikat einer vertrauenswürdigen Zertifizierungsstelle signiert?
  • Integrität - Skripte können nicht durch Malware oder böswillige Benutzer geändert werden.

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

Um dies zu tun, werden Sie die Set-ExecutionPolicy Cmdlet.

Bei der Aktualisierung der Ausführungsrichtlinie müssen Sie zwei wichtige Entscheidungen treffen.

Ausführungsrichtlinientyp:

  • Restricted - Kein Skript, weder lokal noch remote oder heruntergeladen, kann auf dem System ausgeführt werden.
  • AllSigned - Alle ausgeführten Skripte müssen digital signiert sein.
  • RemoteSigned - Alle entfernten Skripte (UNC) oder heruntergeladene müssen signiert werden.
  • Unrestricted - Keine Unterschrift für irgendeine Art von Skript ist 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 betrifft nur den aktuellen Windows PowerShell-Prozess.

† = Standard

Beispielsweise: Wenn Sie die Richtlinie nur für CurrentUser 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 ausgeführt werden PowerShell als Administrator. Wenn Sie sich im regulären Modus befinden und versuchen, die Ausführungsrichtlinie zu ändern, wird der folgende Fehler angezeigt:

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

Wenn Sie die internen Einschränkungen für Ihre eigenen Skripts, die nicht aus dem Internet heruntergeladen wurden (oder zumindest die UNC-Metadaten nicht enthalten), verschärfen möchten, können Sie erzwingen, dass die Richtlinie nur signierte Skripts ausführt. Um Ihre eigenen Skripte zu signieren, können Sie den Anweisungen in Scott Hanselmans Artikel folgen PowerShell-Skripts signieren.

Hinweis: Die meisten Benutzer erhalten diesen Fehler wahrscheinlich, wenn sie Powershell öffnen, da das PS als erstes beim Starten ausgeführt wird. Führen Sie Ihr Benutzerprofilskript aus, das Ihre Umgebung so einrichtet, wie Sie es wünschen.

Die Datei befindet sich normalerweise in:

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

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

$profile

Wenn Sie sich im Profil nicht um etwas kümmern und Ihre Sicherheitseinstellungen nicht ändern möchten, können Sie es einfach löschen, und Powershell findet nichts, was nicht ausgeführt werden kann.


90
2017-11-16 08:05



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ühre 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 erläutere nur die Schritte, die @Chad Miller angedeutet hat. Danke Tschad!


33
2017-12-04 05:25



Wenn Sie diesen Befehl auch vor dem Skript ausführen, wird das Problem ebenfalls gelöst:

set-executionpolicy unrestricted

33
2018-03-27 06:11



Wenn Sie sich in einer Umgebung befinden, in der Sie kein Administrator sind, können Sie die Ausführungsrichtlinie nur für Sie festlegen, und Sie benötigen keinen Administrator.

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

oder

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

Sie können alles über den Hilfe-Eintrag lesen.

Help Get-ExecutionPolicy -Full
Help Set-ExecutionPolicy -Full

26
2017-11-19 19:13



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

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

Set-ExecutionPolicy RemoteSigned

22
2017-07-20 12:37



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

[x64]

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

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 durch eine Richtlinie überschrieben, die in einem spezifischeren Bereich definiert ist. Aufgrund der Überschreibung behält Ihre Shell ihre aktuelle effektive Ausführungsrichtlinie von ...

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

  1. Öffnen Sie Run Command / Console (Sieg + R)
  2. Art: gpedit.msc (Gruppenrichtlinie Editor)
  3. Durchsuchen nach Lokale Computerrichtlinie -> Computerkonfiguration -> Administrative Vorlagen -> Windows-Komponenten -> Windows Powershell.
  4. Aktivieren "Skriptausführung aktivieren"
  5. Legen Sie die Richtlinie nach Bedarf fest. Ich habe meins auf "Erlaube alle Skripte".

Jetzt PowerShell öffnen und genießen;)


16
2017-09-01 09:32