Peter Gyger online

"Gring ache u seckle" (Quelle: A. Weyermann)

NAVIGATION - SEARCH

Powershell Skript über ein anderes Skript starten

In einer Batch Datei (.CMD unter Windows) kann ich eine andere Batchdatei direkt über den Befehl "Call" aufrufen. In den "Windows Basic Script" ("VBS"), definiere ich ein Objekt vom Typ  "Wscript.Shell" und nutzte die Methode "run"

Dim Obj_WshShell
Set Obj_WShell = CreateObject("WScript.Shell")
Obj_WShell.Run "wscript.exe C:\temp\2esSkript.vbs" , 1, True

 

Wie sieht das nun in Powershell aus? Wie funktioniert es genau, wenn ich aus einer .ps1 Datei eine andere .ps1 Datei aufrufen will?

In meinem Test liegt in einem Verzeichnis "C:\Temp\ps-run-ps" zwei Dateien: "eins.ps1" und "zwei.ps". "eins.ps1" ruft "zwei.ps1" auf. "zwei.ps1" zeigt eine Meldung ("Hello World") auf dem Bildschirm an. Code:

*******

#Datei eins.ps1
. C:\Temp\ps-run-ps\zwei.ps1

***********

***********

#Datei zwei.ps1
write-host "Hello Wordl"

************

 Das funktioniert. Das aufrufende Skript bricht nicht ab. D.h. das zweite Skript "erbt" somit auch die Variabeln. Vergleichbar mit dem guten alten "CALL" Befehl in der Batch Sprache.

Wenn man nicht mit Sicherheit bestimmen kann, in welche Verzeichnis ein Powershellskript läuft, muss der Aufruf des zweiten "dynamisch" erfolgen. Das erste wird durch einen Auslöser (Mensch, Dienst, Scheduler) ausserhalb des Skriptes erfolgen. Das Verzeichnis in dem das aktuell laufende Skript sich befindet, kann mit dem CMDLET "Get-Location" ermittelt werden. D.h. der Code des Skriptes eins sieht so aus:

*******

#Datei eins.ps1

#Datei eins
$where_am_i = $(Get-Location).Path
$where_am_i = $where_am_i + "\zwei.ps1"
. $where_am_i

***********

Der Punkt und Leerschlag ist zwingend, wenn man in Powershell ein anderes PS Skript ausführen will. Den Hinweis fand ich auf der Website von Kai Yorch. Weiterführende Informationen zum starten von Programmen in PS Skripten hat das deutsche PS Urgestein Peter Kriegel in einem Artikel vollständig und gut strukturiert erklärt. "Nice to know".

Die Beispiele sind während des Schreibens dieses Post's live erstellt und 1:1 eingefügt worden. D.h. die Beispiele funktionieren auf diesem Computer (Win 10 Prof) in einer Standardumgebung. Vielleicht spart es ja einem der Leser ein paar Stunden Recherche und ausprobieren.  

 

 

Add comment

  Country flag

biuquote
  • Comment
  • Preview
Loading