Get-ScheduledJob的问题和最后尝试捕获

时间:2016-10-30 23:28:39

标签: powershell error-handling scheduled-tasks

在我的PowerShell模块中,我使用Get-ScheduledJob列出了当前计划的作业。

我将手动删除从“任务计划程序”成功运行的作业,这会导致Get-ScheduledJob发出一个非终止错误,指出找不到该作业且已从计算机中删除该作业。 / p>

我遇到的一个奇怪的问题是尝试将这个非终止错误包装在try/catch/finally块中以返回更有意义的错误。

错误行为是catch块运行,但自动变量$_不包含当前异常。因为它为null,-match语句返回False。

我错过了一些非常明显的东西吗?

function ViewOnly {
  try {
    $try = Get-ScheduledJob -ErrorAction Stop
  } catch {
    $ErrorLine = $_.InvocationInfo.Line
    $ErrorMessage = $_.Exception
    [void]$ErrorMessage -match '[0-9-_]{13}\s(Server\sReboot)'

    Write-Verbose "Errored at $ErrorLine"

    Write-Warning "The scheduled Job $($Matches[0]) was not found, Run View-ECCReboots to verify servers rebooted"
  } finally {
    $jobs = Get-ScheduledJob

    if ($jobs) {
      $results = foreach ($job in $jobs) {
        [pscustomobject]@{
          Server = $job.Name
          RebootTime = ($job | Get-JobTrigger).At
        }
      }
    } else {
      "No previously scheduled jobs found!"     
    } #end if

    $results | Sort RebootTime | FT -Auto
  } #end finally
} #end viewonly function.

0 个答案:

没有答案