von - windows powershell script ausführen




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

  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

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 habe set-executionpolicy unrestricted und wenn ich get-executionpolicy von PowerShell ausführe, get-executionpolicy 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?


Öffnen Sie die Powershell als Administrator . Es wird funktionieren


Die meisten der vorhandenen Antworten erklären das 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.

Auf der TechNet-Seite " Über Ausführungsrichtlinien" :

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

Die Vorteile, die in PowerShell Basics - Ausführungsrichtlinien und Codesignierung - aufgezählt werden, sind:

  • Kontrolle der Ausführung - Steuern Sie die Vertrauensstufe für die Ausführung von Skripts.
  • Command Highjack - 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 Get-ExecutionPolicy ausführen. Aber du bist wahrscheinlich hier, weil du es ändern willst.

Dazu führen Sie das Cmdlet Set-ExecutionPolicy aus.

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 AllSigned müssen digital signiert sein.
  • RemoteSigned - Alle Remote Scripts (UNC) oder heruntergeladene müssen signiert werden.
  • 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 betrifft nur den aktuellen Windows PowerShell-Prozess.

† = Standard

Beispiel : 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 PowerShell als Administrator ausführen . 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 Skripte, 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 Skripts zu signieren, können Sie den Anweisungen in Scott Hanselmans Artikel zum Signieren von PowerShell-Skripten folgen.

Hinweis : Die meisten Benutzer erhalten diesen Fehler wahrscheinlich immer dann, wenn sie Powershell öffnen. Das erste, was PS beim Start versucht, ist, dass Sie Ihr Benutzerprofil-Skript ausführen, das Ihre Umgebung nach Belieben einrichtet.

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.


Gewinne + R und tippe den Befehl "Copy Past" und drücke ok

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

und führe dein Skript aus

dann rückgängig Änderungen wie

powershell Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "AllSigned"


Ich hatte ein ähnliches Problem und bemerkte, dass die Standard- cmd unter Windows Server 2012 , die x64 ein.

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

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

x64 (64 Bit)
Öffnen Sie C:\Windows\system32\cmd.exe
Führen Sie den Befehl 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


Ich hatte heute dasselbe Problem. Die 64-Bit-Ausführungsrichtlinie war nicht eingeschränkt, während die 32-Bit-Beschränkung eingeschränkt war.

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

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

Im PowerShell- ISE Editor habe ich festgestellt, dass die folgende Zeile die ersten erlaubten Skripts ausführt.

Set-ExecutionPolicy RemoteSigned -Scope Process

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

Seitdem hat das PowerShell-Team eine Menge Verbesserungen vorgenommen und ist zuversichtlich, dass Benutzer beim Ausführen von Skripts nicht viel kaputt machen werden. Ab PowerShell 4.0 ist es standardmäßig aktiviert.

Set-ExecutionPolicy RemoteSigned in Ihrem Fall Set-ExecutionPolicy RemoteSigned von der PowerShell-Konsole ein und sagen Sie Ja.


Mehrere Antworten zeigen auf die Ausführungsrichtlinie. Einige Dinge erfordern jedoch auch "Runas-Administrator". Dies ist am sichersten, da die Ausführungsrichtlinie nicht permanent geändert wird und Administratoreinschränkungen möglich sind. Verwenden Sie mit Sched-Task, um einen Stapel mit zu starten:

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

sowohl von Jack Edmonds oben, als auch von Peter Mortensen / Dhana von post Wie starte ich eine Anwendung als "run as administrator" von der Eingabeaufforderung?


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

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

powershell -ExecutionPolicy ByPass -File script.ps1

Wechseln Sie zum Registrierungspfad HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ PowerShell \ 1 \ ShellIds \ Microsoft.PowerShell

und setzen Sie ExecutionPolicy: RemoteSigned


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

set-executionpolicy unrestricted

Wenn Sie hier sind, um es mit Ruby oder Chef auszuführen und die Systemausführung zu 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.


Wir können den Status der aktuellen ExecutionPolicy mit dem folgenden Befehl abrufen:

Get-ExecutionPolicy;

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

Wir können die Richtlinie für den aktuellen Benutzer als Bypass oder Unrestricted festlegen, indem Sie einen der folgenden PowerShell-Befehle verwenden:

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 Eingabe einer Berechtigung aufgefordert.

Während in der Umgehungsrichtlinie nichts blockiert ist und während der Ausführung des Skripts keine Warnungen oder Aufforderungen angezeigt werden. Bypass ExecutionPolicy ist entspannter als Unrestricted.





windows-server-2008-r2