サービス名の1つが間違っています(Spooler1)。 try catchブロックを使用してサービスを停止するためにInvoke-commandを実行すると、間違ったメッセージが表示されます。PowerShell Try Catchブロックを使用したエラー処理が間違った結果になる
例:
[array]$Services = "spooler1","spooler"
$ComputerName = 'localhost'
For ($i=0; $i -lt $Services.Count; $i++)
{
Try
{
#Stop service
Invoke-Command -ComputerName $ComputerName -ScriptBlock {param($Service) Stop-Service $Service} -ArgumentList $Services[$i]
Write-Host "Try Block"
}
Catch
{
Write-Host "Catch Block"
}
}
結果:
Cannot find any service with service name 'spooler1'.
+ CategoryInfo : ObjectNotFound: (spooler1:String) [Stop-Service], ServiceCommandException
+ FullyQualifiedErrorId : NoServiceFoundForGivenName,Microsoft.PowerShell.Commands.StopServiceCommand
+ PSComputerName : localhost
Try Block
Try Block
私はそれが両方のサービスのための 'ブロックを試してみてください' というメッセージが結果されるPowerShellのスクリプト上で実行します。
Catch Block
Try Block
しかし、結果がでなければなりませんが、我々はこの問題を修正するために任意の回避策はありますか。
これを参照してください。http://stackoverflow.com/questions/12600921/handle-errors-in-scriptblock-in-invoke-command-cmdlet –