Powershell / promt for choice in promt for choicen aufrufen

Timons

Cadet 4th Year
Registriert
Feb. 2018
Beiträge
88
Hallo

ich wollte mich mal in Powerhell ausprobieren und ein dialog starten lassen wenn der rechner mal zu lange an war.
Er soll einfal fragen "Neustart?" und dann nochmal ein bist du sicher ?
Nun schein es so das ich kein porm for choice unter einem switch aufrufen kann


Im Netz findet man immer nur read Host anweisungen also kann das überhaupt funktionieren oder brauche ich eine andere herangehensweise?


If ($blabla-gt 1) {


$Question = $host.ui.PromptForChoice(
"Sicherheitsrisiko", "Willst du jetzt neustarten?",(
[System.Management.Automation.Host.ChoiceDescription[]](
(New-Object System.Management.Automation.Host.ChoiceDescription "&Neustart","Ja Neustart"),
(New-Object System.Management.Automation.Host.ChoiceDescription "&Nein","Nein")
)
), 0
)

switch($Question){
0 {$Question2 = $host.ui.PromptForChoice(
"Sicherheitsrisiko", "Daten gespeichert? ",(
[System.Management.Automation.Host.ChoiceDescription[]](
(New-Object System.Management.Automation.Host.ChoiceDescription "&Neustart","Ja Neustart"),
(New-Object System.Management.Automation.Host.ChoiceDescription "&Nein","Nein")
}

)
),0
)


switch ($Question2){

0 { .\shutdown.exe -t 120 }

1{ exit }

}
1 {exit}

}

}

Habt erbarmen ist das erste mal, dass ich die Powershell in der Weise benutze :)
 
Dein Code läuft nicht bei mir. Kannst den mal mit vernünftigen Klammern in nem Codeblock posten bitte?

Und soll das am Anfang nen while($true) sein?

//edit:
PowerShell:
$StopWatch = New-Object -TypeName System.Diagnostics.Stopwatch
$StopWatch.Start()
while($StopWatch.ElapsedMilliseconds -lt 21600000){sleep 60}
while($StopWatch.ElapsedMilliseconds -ge 21600000){
$StopWatch.Stop()

$Question = $host.ui.PromptForChoice(
"Sicherheitsrisiko", "Willst du jetzt neustarten?",(
[System.Management.Automation.Host.ChoiceDescription[]](
(New-Object System.Management.Automation.Host.ChoiceDescription "&Neustart","Ja Neustart"),
(New-Object System.Management.Automation.Host.ChoiceDescription "&Nein","Nein")
)
), 0
)

switch($Question){
    0 {$Question2 = $host.ui.PromptForChoice("Sicherheitsrisiko", "Daten gespeichert? ",
        [System.Management.Automation.Host.ChoiceDescription[]](
            (New-Object System.Management.Automation.Host.ChoiceDescription "&Neustart","Ja Neustart"),
            (New-Object System.Management.Automation.Host.ChoiceDescription "&Nein","Nein")
            ), 0
        )
    }
}

switch($Question2){
    0{echo "going down"}
    1{exit}

}
}

Sowas kannst machen?
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Timons
PowerShell:
#das Programm funktioniert nicht mehr sobald ich $question 2 einbauen will
$Question = $host.ui.PromptForChoice(
"Sicherheitsrisiko", "Willst du jetzt neustarten?",(
[System.Management.Automation.Host.ChoiceDescription[]](
(New-Object System.Management.Automation.Host.ChoiceDescription "&Neustart","Ja Neustart"),
(New-Object System.Management.Automation.Host.ChoiceDescription "&Nein","Nein")
)
), 0
)

switch($Question){
    0{echo "going down"}
    1{exit}

}
Entschuldige!
Der Code funktioniert ohne den 2. Switch

und meine Frage war uach etwas umständlich formuliert aber wo liegt der Fehler warum der Code nicht funktioniert
 
Keine Ahnung, ich habs dann selbst neugebaut. Dein Code war unleserlich.
Du siehst ja in meinem Beispiel funktionierenden Code?
Den Vergleich musst du jetzt selbst anstellen.
 
Ich finde es nicht (vermutlich fehlende Klammer) aber ich kann mir eine ordentliche Scheibe an deiner Struktur abschneiden

Danke nochmal für die schnelle Hilfe :)
 
Zurück
Oben