如何设置do-while(for())循环?

时间:2013-03-07 06:57:50

标签: powershell

我不确定是否只有一种更有效的方法可以做到这一点,或者如果组合一个while和for循环甚至可以工作,但我怎么能解决这个问题才能运行该函数for循环中的每个项都返回true?

$In = @()
While ($In[-1] -ne 'done') {$In += @(Read-Host 'Prompt')}

do {
    for($i=0;$i-le $In.length-2;$i++) {function($In[$i])}
   }
while (for($j=0;$j-le $In.length-2;$j++)
    {Get-Service ($In[$j]) | $_.status} -eq "Running")

使用$ In各种服务的名称数组,当任何一个服务返回状态时,do-while应该重新启动数组中的每个服务" Stopped"。

3 个答案:

答案 0 :(得分:0)

我这样做:

$In = @()
do 
{
 $c = (Read-Host 'Enter service name') 
 if ($c) { $in+=$c} 
}
while  ($c) #just a void input to end    

$in | where-object {(Get-Service -name $_ ).Status -match 'Stopped'} | Restart-Service

答案 1 :(得分:0)

也许OT,但是如果你在那个系统上有V3,我会这样做:

Get-Service | sort Status | Out-GridView -Title 'Select services to restart' -OutputMode Multiple | Restart-Service

答案 2 :(得分:0)

while(($ans = Read-Host 'Give me something') -ne 'done'){
    Restart-Service $ans
}