Powershell – Skript per Batch ausführen
Powershell – Skript per Batch ausführen

Will man ein Powershell Script mal schnell durch die Ausführung einer Datei starten, oder macht die direkte Ausführung des Powershell Scripts über einen Scheduled Task Probleme, dann hilft ev. die Verpackung in eine Batch Datei.

Der Aufruf in der Batch Datei sieht dem Aufruf über den Aufgabenplaner ziemlich ähnlich.
Folgenden Code einfach in ein Batchfile schreiben und als “Batchname.cmd” abspeichern.

Powershell.exe -Command "& 'C:\Ordner\Script.ps1'"

 

Thematik ExecutionPolicy

Je nach Einstellung des Powershell Profils auf dem ausführenden Rechners, kann es sein, dass die ExecutionPolicy der korrekten Ausführung einen Strich durch die Rechnung macht.

Eine Möglichkeit dazu:

Powershell.exe -ExecutionPolicy Bypass -Command "& 'C:\Ordner\Script.ps1'"

Der Aufruf über die Bypass Einstellung hebt jegliche Blockaden, Warnungen und Prompts auf. Aus dem Blickwinkel der Sicherheits ist die Einstellung Bypass kein wünschenswertes Setting, doch ob es eingesetzt wird oder nicht, ist jedem selber überlassen.

Mögliche ExecutionPolicy Werte:

Wert Auswirkung
Restricted Standard – Es werden weder Konfigurationsdateien geladen, noch Scripte ausgeführt.
AllSigned Signierte Scripte und Konfigurationen vertrauenswürdiger Herausgeber werden ausgeführt. Alle! Lokale sowie Internet Scripte.
RemoteSigned Heruntergeladene Scripte aus dem Internet müssen von einem vertrauenswürdigen Herausgeber stammen.
Unrestricted Scripte werden ausgeführt. Scripte aus dem Netz müssen am Prompt bestätigt werden.
Bypass Keine Blockaden, Warnungen und Prompts
Undefined Entfernt die gerade zugewiesene Richtlinie (nur lokal zugewiesene)

 

Ausführung mit erhöhten Rechten

Nebst der ExecutionPolicy kann es auch vorkommen, dass euer Powershell Script mit erhöhten Rechten ausgeführt werden muss.

Powershell.exe -Command "& {Start-Process Powershell.exe -ArgumentList '-ExecutionPolicy Bypass -File "C:\Ordner\Script.ps1"' -Verb RunAs}"

 

Powershell Script im Batch durch Variable ersetzen

Damit das Batch File flexibler eingesetzt werden kann, ersetzen wir hier das darin enthaltene Powershell Script durch eine Variable, welche Ihren Wert durch den Dateinamen des Batchfiles erhält.

Powershell.exe -ExecutionPolicy Bypass -Command "& '%~dpn0.ps1'"

Das Batchfile muss in dieser Variante zusammen mit dem Powershell Script im selben Ordner liegen und den selben Namen tragen.
Bsp.
Muster.ps1
Muster.cmd

Parameter %0 im Batchfile

Angenommen die unten stehenden Parameter werden in diesem Batchfile “C:\Ordner\Unterordner\Muster.bat” verwendet, dann würde man die unter Ausgabe aufgeführten Werte erhalten.

%0 
Ausgabe: Muster

%~0 
Ausgabe: Muster

%~d0 
Ausgabe: C:

%~dp0 
Ausgabe: C:\Ordner\Unterordner\

%~dpn0 
Ausgabe: C:\Ordner\Unterordner\Muster

%~dpnx0 
Ausgabe: C:\Ordner\Unterordner\Muster.bat

%~f0
Ausgabe: C:\Ordner\Unterordner\Muster.bat</pre>
<pre>

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Buy now
WP2Social Auto Publish Powered By : XYZScripts.com