我如何 try/catch invoke-command 并继续?

How do I try/catch inside invoke-command and continue?

我正在尝试捕获调用命令循环中的错误。我想捕获,写一个我自己的错误,然后继续我的循环,但我不断打印出异常,而我的捕获什么也不做。下面的示例是我想要工作的。

$Result = Invoke-Command -Computer $computer -ScriptBlock {

            $instanceName = "MSSQL`$SQLEXPRESS"

            try {

                $sqlService = Get-Service -Name $instanceName

            } catch {

                Write-Host "No SQL on server $env:COMPUTERNAME"
                return $_
                continue
            }

找不到指定的服务不被认为是严重的 - 这是一个 "non-terminating" 错误。您仍然会收到错误 message/object,但它(按设计)不足以调用 catch。您可以使用 ErrorAction 参数强制它(即使其成为 "terminating"),如下所示:

$sqlService = Get-Service -Name $instanceName -ErrorAction Stop