Frage

Ich schrieb eine einfache batch-Datei als PowerShell-Skript, und ich bin immer Fehler, wenn Sie ausgeführt werden.

Es ist in einem Skriptverzeichnis in meinem Pfad.

Cannot be loaded because the execution of scripts is disabled on this system. 
please see "get-help about-signing".

Ich schaute auf die Hilfe, aber es ist weniger als hilfreich.

War es hilfreich?

Lösung

Es könnte sein, PowerShell-Standard-Sicherheit Ebene, die (IIRC) wird nur signierte Skripts ausgeführt.

Versuchen Sie dies:

set-executionpolicy remotesigned

Sagen, PowerShell, dass lokale (das heißt, auf einer lokalen Festplatte) nicht signierte Skripts ausgeführt werden können.

Dann probieren Sie die Ausführung Ihres Skripts wieder.

Andere Tipps

Sie müssen laufen Set-ExecutionPolicy:

Set-ExecutionPolicy Restricted <-- Will not allow any powershell scripts to run.  Only individual commands may be run.

Set-ExecutionPolicy AllSigned <-- Will allow signed powershell scripts to run.

Set-ExecutionPolicy RemoteSigned <-- Allows unsigned local script and signed remote powershell scripts to run.

Set-ExecutionPolicy Unrestricted <-- Will allow unsigned powershell scripts to run.  Warns before running downloaded scripts.

Set-ExecutionPolicy Bypass <-- Nothing is blocked and there are no warnings or prompts.

Verwenden:

Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process

Verwenden Sie immer die oben genannten Befehl zu ermöglichen die Ausführung von PowerShell in der aktuellen Sitzung.

Ich war in der Lage, zur Umgehung dieser Fehler durch aufrufen der PowerShell wie diese:

powershell -executionpolicy bypass -File .\MYSCRIPT.ps1

Das heißt, ich fügte hinzu, die -executionpolicy bypass auf dem Weg rief ich den script.

Das funktionierte unter Windows 7 Service Pack 1.Ich bin neu in PowerShell, also es könnte sein, Vorsichtsmaßnahmen zu tun, dass ich bin nicht bewusst.

[Bearbeiten 2017-06-26] ich habe weiter verwenden, diese Technik auf andere Systeme, einschließlich Windows 10 und Windows 2012 R2 ohne Probleme.

Hier ist, was ich nun benutze.Dieser hält mich von versehentlich läuft das Skript durch anklicken.Wenn ich es in der scheduler-ich fügen Sie ein argument:"scheduler" und umgeht die Aufforderung.

Auch dies hält die Fenster am Ende, so dass ich sehen kann die Ausgabe der PowerShell.

if NOT "%1" == "scheduler" (
   @echo looks like you started the script by clicking on it.
   @echo press space to continue or control C to exit.
   pause
)

C:
cd \Scripts

powershell -executionpolicy bypass -File .\rundps.ps1

set psexitcode=%errorlevel%

if NOT "%1" == "scheduler" (
   @echo Powershell finished.  Press space to exit.
   pause
)

exit /b %psexitcode%
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process

Der obige Befehl funktionierte für mich, auch wenn der folgende Fehler Auftritt:

Access to the registry key 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell' is denied.

Auch es lohnt sich zu wissen, dass Sie möglicherweise enthalten .\ vor der Skript-name.Zum Beispiel:

.\scriptname.ps1

Der Befehl set-executionpolicy unrestricted kann jedes Skript, das Sie erstellen, zu laufen, als der angemeldete Benutzer.Nur sicher sein, um die executionpolicy Einstellung wieder unterzeichnet mit dem set-executionpolicy signed Befehl vor, um sich abzumelden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top