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

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 に答える
0
while(($ans = Read-Host 'Give me something') -ne 'done'){
    Restart-Service $ans
}
于 2013-03-08T09:25:14.283 に答える