0

我写了下面的脚本。它工作得很好。但是我错过了重要的一步。评估服务名称是否为:错误/拼写错误。我已经捕获了其中一个拼写错误,并想在我的脚本中添加逻辑来处理它。这是我的脚本。谢谢

 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 可能更容易使用?

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 回答