Frage Wie aktiviert man die Ausführung von PowerShell-Skripten?


Wenn ich versuche, mein PowerShell-Skript auszuführen, erhalte ich folgende Fehlermeldung:

Die Datei C: \ Common \ Scripts \ hello.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: 13
  +. \ Hallo.ps1 <<<<
      + CategoryInfo: NotSpecified: (:) [], PSSecurityException
      + FullyQualifiedErrorId: RuntimeException


181
2018-02-08 18:41


Ursprung




Antworten:


  1. Starten Sie Windows PowerShell mit der Option "Als Administrator ausführen". Nur Mitglieder der Gruppe Administratoren auf dem Computer können die Ausführungsrichtlinie ändern.

  2. Aktivieren Sie das Ausführen nicht signierter Skripts durch Eingabe von:

    set-executionpolicy remotesigned
    

Dies ermöglicht das Ausführen nicht signierter Skripts, die Sie auf Ihrem lokalen Computer schreiben und signieren Skripte aus dem Internet.

Siehe auch Skripte ausführen in der Microsoft TechNet-Bibliothek.


271
2018-02-08 18:44



+1 für remotesigned statt uneingeschränkt. Sie können Ihre lokalen Skripts ausführen, ohne sich Gefahren aus anderen Ländern auszusetzen. - DarrellNorton
Danke - dieser Beitrag hat mir geholfen. Allerdings hatte ich noch weitere Probleme, weil ich PowerShell "als Administrator" nicht unter Win8 ausgeführt hatte - sergeantKK
Wird dies die Richtlinie dauerhaft ändern oder muss ich dies jedes Mal tun, wenn ich meinen Computer neu starte? - Ray
Gibt es eine Möglichkeit, die Ausführung von a zu aktivieren? Spezifisch Powershell-Skript? Vielleicht möchte ich es einfach zulassen hello.ps1 aus dem OP oder Microsoft.PowerShell_profile.ps1 auf einer Benutzer-Box? (Ich denke, das fällt wohl unter die zugegebenermaßen breite OP-Frage (ha, die ich jetzt sehe, gehört auch dir!). Wenn du das aber als eine neue Frage empfindest, kann ich sie fragen.) - ruffin
@ Ruffin Würdest du bitte eine separate Frage dazu stellen? Sie können es dann hier verlinken. - Pavel Chuchuva


Die Standardausführungsrichtlinie ist auf "Eingeschränkt" festgelegt. Sie können sie sehen, indem Sie Folgendes eingeben:

Get-ExecutionPolicy

Sie sollten Folgendes eingeben, um den uneingeschränkten Modus zu aktivieren:

Set-ExecutionPolicy unrestricted

Hoffe das hilft


60
2018-02-08 18:43



-1. das ist WEG zu offen, um einfach auszuführen. RemoteSigned ist besser. - TomTom
Das erforderliche Signieren ist sinnvoll, wenn Sie erwarten, dass der Benutzer bösartige Skripts aus dem Internet kopiert und einfügt. Wenn Sie annehmen, dass der Benutzer nicht dumm ist, dann fügt "remotesigned" keine Sicherheit hinzu und macht das Leben schwierig. - Guss


Auf meiner Maschine, die ich für Dev-Skripte verwende, werde ich -unbegrenzt wie oben beschrieben verwenden. Wenn ich meine Skripte jedoch auf einem Endbenutzercomputer bereitstellen möchte, rufe ich einfach powershell mit der Option -executionpolicy an:

powershell.exe -noprofile -executionpolicy bypass -file .\script.ps1

48
2018-01-14 00:46



Sie können diesen Trick mit einem mehrsprachigen Trick in einer .CMD-Datei kombinieren. Sehen stackoverflow.com/a/8597794/5314 - Jay Bazuzi
Nett! Ich habe sfx's von winrar bereitgestellt rarlabs.com - MDMoore313
Dieser Trick erlaubte mir, Powershell-Skript von Git Bash (MINGW32 bash) auszuführen - Kamil Szot


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

Get-ExecutionPolicy;

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

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

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

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

Uneingeschränkt Die 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 Bypass Richtlinie, nichts ist blockiert und es gibt keine Warnungen oder Aufforderungen während der Skriptausführung. Bypass ExecutionPolicy ist entspannter als Unrestricted.


7
2017-09-07 07:06





Abhängig von der Windows-Version und -Konfiguration haben Sie möglicherweise die folgende Warnung, sogar in Unrestricted Modus:

Security warning
Run only scripts that you trust. While scripts from the internet can be useful, this
script can potentially harm your computer. If you trust this script, use the 
Unblock-File cmdlet to allow the script to run without this warning message. 
Do you want to run?
[D] Do not run  [R] Run once  [S] Suspend  [?] Help (default is "D")

Die Lösung besteht darin, die Richtlinie "bypass" zu verwenden, die mit folgendem Befehl aktiviert wird:

Set-ExecutionPolicy Bypass

Von dem Dokumentation:

Bypass: Nichts ist blockiert und es gibt keine Warnungen oder Aufforderungen.

Dies ist offensichtlich unsicher, bitte verstehen Sie die damit verbundenen Risiken.


3
2018-01-21 10:01



Nur so konnte ich mein Skript in einer WINE-Umgebung mit Powershell 2.0 ausführen lassen. Vielen Dank. - Wyatt8740


Ein Registrierungsschlüssel mit:
Windows Registrierungseditor Version 5.00

[HKEY_LOCAL_MACHINE \ SOFTWARE \ Richtlinien \ Microsoft \ Windows \ PowerShell]   "EnableScripts" = dword: 00000001 "ExecutionPolicy" = "Umgehen"

und:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\PowerShell]
"EnableScripts"=dword:00000001 "ExecutionPolicy"="Unrestricted"

funktioniert in der Tat auch.


1
2017-11-29 10:10





Der Grund dafür, dass der reg-Schlüssel funktioniert, ist, dass er genau das tut, was die PS-Befehle tun. Die Befehle schreiben die Änderungen in die reg-Tasten. Befehle sind viel schneller und einfacher als das Erstellen eines Registrierungsschlüssels oder das Durchsuchen der Registrierung.


-1
2018-04-05 13:49



Das ist einfach falsch: Die Schlüssel, die in anderen Antworten erwähnt wurden, ändern die Ausführungsrichtlinie für die Powershells, die dann das Powershell-Skript aktiviert. - Patrick R.