2016-08-08 25 views
2

Ich habe das Skript, das funktioniert, und es ist wahrscheinlich einige dumme Zeichen fehlt, aber ich kann es einfach nicht finden. Hilf mir bitte? Soll eine Auswahlleiste aufklappen und die $ -Antwort entsprechend dem gewählten Projekt ändern.Power Shell-Skript - wenn und fehlende Anweisung wechseln

#What project do you work on 
$caption = "Choose Action"; 
$message = "What project are you testing?"; 
$LLL = new-Object System.Management.Automation.Host.ChoiceDescription "&LLL","LLL"; 
$JJJ = new-Object System.Management.Automation.Host.ChoiceDescription "&JJJ","JJJ"; 
$PPP = new-Object System.Management.Automation.Host.ChoiceDescription "&PPP","PPP"; 
$choices = [System.Management.Automation.Host.ChoiceDescription[]]($LLL,$JJJ,$PPP); 
$Project = $host.ui.PromptForChoice($caption,$message,$choices,0) 

switch ($Project) { 
    0 {"LLL"; break} 
    1 {"JJJ"; break} 
    2 {"PPP"; break} 
    } 


if ($Project -eq 0) 
    { 
    $Answer = "LLL" 
    } 


if ($Project -eq 1) 
    { 
    $Answer = "JJJ" 
    } 


if ($Project -eq 2) 
    { 
    $Answer = "PPP" 
    } 


the error is that 

o.ps1:128 char:23 
+  if ($Project -eq 1) 
+      ~ 
Missing statement block after if (condition). 
At ps1:136 char:27 
+   if ($Project -eq 2) 
+       ~ 
Missing statement block after if (condition). 
    + CategoryInfo   : ParserError: (:) [], ParentContainsErrorRecordException 
    + FullyQualifiedErrorId : MissingStatementBlock 
+0

Kopieren/Einfügen Sie Ihren Code und es läuft ohne Probleme in der ISE ?! Sind Sie sicher, dass Sie nicht nur einen Teil davon ausgewählt haben? –

+0

Haben Sie eine besonders alte Version von PowerShell? Die Zeilenfortsetzung ist in Sprachen, die kein explizites Zeilenendezeichen haben, schwieriger. Die Fähigkeit von PowerShell, sauber über Zeilen hinweg zu arbeiten (ohne einem Zeilenumbruch durch ein Häkchen zu entkommen), hat sich mit steigender Versionsnummer deutlich verbessert. –

+0

Sie sollten das Ergebnis von 'switch' etwas zuweisen, während es derzeit nur in void ausgewertet wird. Zum Beispiel '$ answer = switch {.....}' und entferne diese 'if', wenn sie den Schalter duplizieren. – wOxxOm

Antwort

4

Ihr Code sollte funktionieren. Wenn Sie nur $Answer festlegen möchten, können Sie auch tun, dass in Ihrem Schalterblock:

$Answer = switch ($Project) { 
    0 {'LLL'} 
    1 {'JJJ'} 
    2 {'PPP'} 
} 

Jetzt können Sie alle if-Anweisungen weglassen ...