chris123
Goto Top

Powershell: auf Bestätigung warten

Hallo,

ich möchte in meinem Powershell ab einer bestimmten Zeile stoppen und erst bei Bestätigung "ja" fortsetzen. Bei "nein", wird das Skript beendet. Ist sicher kein großer Aufwand, aber ich bekomme es nicht hin.

Danke!
Chris

Content-ID: 358939

Url: https://administrator.de/forum/powershell-auf-bestaetigung-warten-358939.html

Ausgedruckt am: 27.12.2024 um 22:12 Uhr

emeriks
Lösung emeriks 21.12.2017 um 17:41:41 Uhr
Goto Top
NetzwerkDude
Lösung NetzwerkDude 21.12.2017 um 18:09:24 Uhr
Goto Top
Bin mir nicht sicher ob es mit "eingebauten" J/N gibt, aber man kann es ralativ einfach selbst bauen

#Hier fragst du nach dem Input für den Test (also J oder Nein, wobei der User alles mögliche eingeben kann)
$test = Read-Host "willst du wirklich weitermachen? (J/N)"  
# Wenn nun "J" eingegeben wurde, wird der if Teil ausgeführt, sonst der else teil - es ist also nicht wirklich genau 
if ($test -eq 'J') {  
    Write-Host "Fahre mit dem Skript fort"  
    }
else{
    Write-Host "Hören wir lieber auf"  
}
Tektronix
Lösung Tektronix 22.12.2017 um 09:05:25 Uhr
Goto Top
Hallo,
bei dieser Funktion wird auf "Enter" gewartet.
Pause

function Pause ($Message="Press any key to continue...")  
{
  Write-Host -NoNewLine $Message
  $null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")  
  Write-Host ""  
}
chris123
chris123 25.12.2017 um 09:52:33 Uhr
Goto Top
Vielen Dank für Eure Hilfe!

Nun habe ich ein weiteres Problem. Ich würde gerne eine verschachtelte IF-Anweisung bauen. Aber elseif passt nicht und ich bräuchte da noch mal Hilfe ...
$test = "10"  
if ($test -eq "10")  
{Write-Host "Test ist gleich 10"  
$test2 = Read-Host "Willst du weitermachen? (J/N)"  
if ($test2 -eq 'J')   
Write-Host "j wurde gedrückt"}  
else 
{Write-Host "n wurde gedrückt"}  
else
{Write-Host "Test ist ungleich 10"}  

Ich glaube mein Vorhaben erklärt sich von selbst, aber funktioniert leider nicht. Ich habe zwei Bedingungen. Wenn $test = 10 und $test2 = j, dann soll was ausgführt werden. Wenn die erste Bedingung nicht stimmt, dann soll das erste else und bei der zweiten fehlenden Bedingung, das zweite else ausgführt werden. Ich denke, dass geht über break oder continue, aber wie?

Danke noch mal!
emeriks
emeriks 25.12.2017 um 11:54:34 Uhr
Goto Top
Du hast Dich bei den {} vertan und musst beachten, dass "j" nicht gleich "J" ist.
$test = "10"  
if($test -eq "10")  
{
  Write-Host "Test ist gleich 10"  
  $test2 = Read-Host "Willst du weitermachen? (J/N)"  
  if($test2 -eq 'J')   
  {
    Write-Host "j wurde gedrückt"#  
  }
  else 
  {
    Write-Host "n wurde gedrückt"  
  }
}
else
{
  Write-Host "Test ist ungleich 10"  
}
colinardo
colinardo 25.12.2017 aktualisiert um 13:31:55 Uhr
Goto Top
und musst beachten, dass "j" nicht gleich "J" ist.
In dem Fall schon, standardmäßig sind die die Vergleichsoperatoren wie -eq ist nicht case sensitive. Erst wenn du stattdessen vor den Operator noch ein "c" setzt wie bei -ceq ist der Vergleich case-sensitive.

Grüße Uwe