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-Key: 358939

Url: https://administrator.de/contentid/358939

Printed on: April 27, 2024 at 01:04 o'clock

Member: emeriks
Solution emeriks Dec 21, 2017 at 16:41:41 (UTC)
Goto Top
Member: NetzwerkDude
Solution NetzwerkDude Dec 21, 2017 at 17:09:24 (UTC)
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"  
}
Member: Tektronix
Solution Tektronix Dec 22, 2017 at 08:05:25 (UTC)
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 ""  
}
Member: chris123
chris123 Dec 25, 2017 at 08:52:33 (UTC)
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!
Member: emeriks
emeriks Dec 25, 2017 at 10:54:34 (UTC)
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"  
}
Member: colinardo
colinardo Dec 25, 2017 updated at 12:31:55 (UTC)
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