0

以下のスクリプトを書きました。それはうまくいきます。しかし、私は重要なステップを逃しました。サービス名が間違っているかスペルが間違っているかどうかを評価します。これらのスペルミスの 1 つを既に把握しており、それを処理するロジックをスクリプトに追加したいと考えています。これが私のスクリプトです。ありがとう

 Set-ExecutionPolicy -ExecutionPolicy Unrestricted
$Services = Import-Csv '\\wnp6636\d$\Scripts\ProdList(1).csv' | foreach-object {$_}
$ErrorActionPreference = "SilentlyContinue"
foreach ($Serve in $Services) {
get-service -computername $Serve.Server -name      $Serve.Services,$Serve.Services_A,$Serve.Services_B,$Serve.Services_C,`
    $Serve.Services_D,$Serve.Services_E,$Serve.Services_F,$Serve.Services_G,$Serve.Services_H |`
foreach-object {if($_.Status -eq "Stopped")`
{write-host $Serve.Server $_.Displayname $_.Status -Fore "Red"}
else
{write-host $Serve.Server $_.Displayname $_.Status -Fore "Green"}
}
} 
4

1 に答える 1

0

私はあなたが何を望んでいるのか理解できることを願っています...

スイッチの方が使いやすいかも?

switch($_.status)
{
 "Stopped"{whatever code you want when it matches stopped;break}
 "Running"{whatever code you want when it matches running:break}
 Default{whatever code you want when it matches none of expected results:break}
}

if と else を取り除き、スイッチに for ループを与えます

あなたはそれで好きなだけ空想を得ることができます。また($servicesは配列だと思います)そうであれば、get-servicesを含むdoループに配列をフィードしてからswitchを使用できます

あなたの時間を無駄にしていないことを願っています 頑張ってください

そこにたどり着くはずのデフォルトの {read-host "No such service found:Please check spelling and try again"} についてもう少し助けが必要かもしれないことに気付きました

于 2013-09-04T03:39:22.130 に答える