none
Benutzereingaben ueber Konsole (read-host funktioniert nicht) wenn das Skript innerhalb eines anderen Skriptes aufgerufen wird. RRS feed

  • Frage

  • Hallo Powershell-Profis,

    ich schreibe ein Powershell-Skript (PSVersion 5.1.14393.2636) auf Windows Server 2016.
    Das Skript soll am Ende mehrere verschiedene Aufgaben erfüllen, daher ist es untergliedert:
    "Programmstart.ps1"
         "Programmphase1.ps1"
                "UnterprogrammPhase1a.ps1"
                "UnterprogrammPhase1b.ps1"
                "UnterprogrammPhase1c.ps1"
         "Programmphase2.ps1"
                "UnterprogrammPhase2a.ps1"
                "UnterprogrammPhase2b.ps1"
         "Programmphase3.ps1"
                "UnterprogrammPhase3a.ps1"
                "UnterprogrammPhase3b.ps1"
                "UnterprogrammPhase3c.ps1"
                "UnterprogrammPhase3d.ps1"

    "Programmstart.ps1" ruft die Dateien "Programmphase....ps1" auf, welche wiederum die Dateien "UnterprogrammPhase....ps1" aufrufen.

    Der Aufruf erfolgt über  powershell.exe -file Programmphase1.ps1 -parameter1 $parameter1 - parameter2  $parameter2 

    Grundsätzlich funktioniert dieses Prinzip, bis auf zwei Punkte:

    Punkt1: Benutzereingaben über die Konsole

    (Ich möchte keine GUI verwenden, mit GUI funktioniert es)

    Benutzereingaben über read-Host sind nur in der obersten Ebene "Programmstart.ps1" möglich.
    Bereits in der nächsten Ebene "Programmphase1.ps1" bleibt das Skript einfach stehen. Es können weder Eingaben gemacht werden, noch kann das Skript abgebrochen werden.

    Ich hatte schon versucht das Skript auszutricksen und habe anstatt read-host eine separate Datei mit Mandatory-Parameter aufgerufen, dies hat leider nicht funktioniert.

    Gibt es eine Möglichkeit auch in dieser Ebene Benutzereingaben abzufragen?


    Punkt2: Darstellung von Schriftfarben in der Konsole


    Zur besseren Orientierung im Programmablauf der Konsole sollen bestimmte Textabschnitte farblich hervorgehoben werden. Dies funktioniert nur in der obersten Ebene "Programmstart.ps1" des Programms, nicht in den Unterebenen "Programmphase.....ps1" bzw "UnterprogrammPhase....ps1"

    write-host "schwarze Schrift auf grünem Untergrund" -BackgroundColor Green -ForegroundColor Black

    Hier werden die Farbanweisungen einfach ignoriert.

    Ich habe selbst an mehreren Tagen über mehrere Stunden gegoogelt und ausprobiert, aber keine Lösung finden können.
    Es wäre super, wenn mir hier jemand weiterhelfen könnte.

    Vielen Dank schon mal im Voraus.

    Viele Grüße
    PSNeuling

    Mittwoch, 20. März 2019 12:43

Antworten

  • Moin,

    ist es denn funktional notwendig, für jeden Aufruf einen separaten powershell.exe-Prozess zu erzeugen? Ansonsten könntest Du Deine Unterskripte einfach mit

    & $PSScriptRoot\Subscript.ps1 Wert1 Wert2

    aufrufen.


    Evgenij Smirnov

    http://evgenij.smirnov.de

    • Als Antwort markiert PSNeuling Mittwoch, 20. März 2019 14:41
    Mittwoch, 20. März 2019 13:07

Alle Antworten

  • Moin,

    ist es denn funktional notwendig, für jeden Aufruf einen separaten powershell.exe-Prozess zu erzeugen? Ansonsten könntest Du Deine Unterskripte einfach mit

    & $PSScriptRoot\Subscript.ps1 Wert1 Wert2

    aufrufen.


    Evgenij Smirnov

    http://evgenij.smirnov.de

    • Als Antwort markiert PSNeuling Mittwoch, 20. März 2019 14:41
    Mittwoch, 20. März 2019 13:07
  • Hallo Evgenij,

    ich bin auf die Methode mit dem separaten powershell.exe-Prozess ausgewichen, da ich mit der dot-Notation auf Kriegsfuß stand (vermutlich habe ich die Parameter falsch bzw. gar nicht mitgegeben).

    Jetzt klappt es mit den Parametern, die Benutzereingabe mit read-Host funktioniert und die Farben sind da :-)

    Ganz dickes Dankeschön!

    Viele Grüße

    PSNeuling

    Mittwoch, 20. März 2019 14:23