在我的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.