A szkriptek esetében gyakori, hogy egy kis interakciót várunk el tőlük, azaz ne kelljen mindig parancssorban felparaméterezni őket, hanem kérdezzék meg tőlünk, hogy mit szeretnének. A következő példában egy kis interaktív vezérlést mutatok be egy kis menüstruktúra segítségével:
do
{
Write-Host "========================================================="
Write-Host "0 -
Folyamatok listázása"
Write-Host "1 -
Szolgáltatások listázása"
Write-Host "2 -
Folyamat indítása"
Write-Host "3 -
Folyamat leállítása"
Write-Host "9 -
Kilépés"
$v = Read-Host
Write-Host "========================================================="
switch ($v)
{
"0" {Get-Process}
"1" {Get-Service}
"2" {&(Read-Host "Folyamat
neve")}
"3" {Stop-Process -name (&Read-Host "Folyamat neve")}
"9" {break}
default
{Write-Host "Érvénytelen
billentyű!";break }
}
} while ($v -ne "9")
A szkript egy jó kis hátul tesztelő do-while ciklus, ami egészen addig fut, amíg a középtájon található Read-Host cmdletnek nem adunk át egy 9-est.
Ha 0, 1, 2, 3 értékek valamelyikét adjuk be neki, akkor egy switch kifejezés a megfelelő PowerShell cmdletet futtatja le. Ráadásul bizonyos parancsok még további paramétert igényelnek, így azokat egy újabb Read-Host kéri be.
A Read-Host nem billentyű leütésére vár, hanem komplett sort kér be Enter leütéséig, és addig vár, amíg ezt meg nem kapja. A fenti példában látható, hogy nem muszáj a Read-Host kimenetét változóba tölteni, azt azon melegében is felhasználhatjuk.
Például a „2”-es választásával rögtön meghívjuk azt, amit begépeltünk:
&(Read-Host "Folyamat neve")
Ugye itt megint használjuk a „végrehajtatás” operátorát, az & jelet.
A Read-Host-nak van egy szöveg paramétere, ezt teszi fel kérdésként a sor beadására való várakozás előtt.