0

我不确定是否有更有效的方法可以做到这一点,或者结合 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 应该在任何一个服务返回状态“已停止”时重新启动数组中的每个服务。

4

3 回答 3

0
while(($ans = Read-Host 'Give me something') -ne 'done'){
    Restart-Service $ans
}
于 2013-03-08T09:25:14.283 回答
0

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

Get-Service | sort Status | Out-GridView -Title 'Select services to restart' -OutputMode Multiple | Restart-Service
于 2013-03-07T11:56:02.960 回答
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
于 2013-03-07T08:05:53.973 回答