2013-05-18 131 views
2

我正在編寫一個PowerShell腳本,該腳本爲用戶提供了多個可供選擇的選項。一旦選擇了選項,就會執行一個功能並將用戶返回到原始菜單。如何返回到PowerShell中函數末尾的用戶菜單

在下面的代碼中,給用戶提供了選項,並且執行了功能,但是當完成時,腳本就結束了。我想要的是在函數結尾返回到原始用戶菜單。有人能告訴我如何做到這一點?謝謝!

function firstFunction { 
    Write-Host "You chose option 1" 
    return 
} 

Write-Host "Welcome" 

[int]$userMenuChoice = 0 
while ($userMenuChoice -lt 1 -or $userMenuChoice -gt 4){ 
    Write-Host "1. Menu Option 1" 
    Write-Host "2. Menu Option 2" 
    Write-Host "3. Menu Option 3" 
    Write-Host "4. Quit and Exit" 

[int]$userMenuChoice = Read-Host "Please choose an option"} 
switch ($userMenuChoice) { 
    1{firstFunction} 
    2{Write-Host "You chose option 2"} 
    3{Write-Host "You chose option 3"} 
default {Write-Host "Nothing selected"} 
} 

回答

2

把菜單代碼爲外環不終止,除非$userMenuChoice是4:

do { 
    [int]$userMenuChoice = 0 
    while ($userMenuChoice -lt 1 -or $userMenuChoice -gt 4) { 
    Write-Host "1. Menu Option 1" 
    Write-Host "2. Menu Option 2" 
    Write-Host "3. Menu Option 3" 
    Write-Host "4. Quit and Exit" 

    [int]$userMenuChoice = Read-Host "Please choose an option" 

    switch ($userMenuChoice) { 
     1{firstFunction} 
     2{Write-Host "You chose option 2"} 
     3{Write-Host "You chose option 3"} 
     default {Write-Host "Nothing selected"} 
    } 
    } 
} while ($userMenuChoice -ne 4) 
+0

您好,感謝答案。當我按照你的建議做時,程序會陷入選定函數內部的無限循環中。如何讓函數在運行一次時返回到菜單? – user2342775

+0

我的錯誤。 'Read-Host'行有一個虛假的關閉花括號,並且在再次顯示菜單之前,代碼沒有重置'$ userMenuChoice'。固定。 –

+0

太好了,非常感謝! :-) – user2342775