问题描述
我有监控软件的脚本,我想监控失败或成功的 Windows 计划任务。
Powershell 脚本如下所示:
SELECT FILE_NAME,ERROR_COUNT FROM informatION_SCHEMA.LOAD_HISTORY
WHERE TABLE_NAME = 'MY_TABLE'
AND STATUS = 'PARTIALLY_LOADED'
AND ROW_COUNT - ROW_PARSED <= ERROR_LIMIT
GROUP BY 1
脚本的输出是这样的:
select * from table(validate(MY_TABLE,job_id => '_last'))
每条线路都会为我们的监控软件添加服务。它需要有不同的名称,这就是为什么我为每一行 MWT1,2,3 递增值。
问题是,每次运行脚本时,我都需要为每个对象设置相同的增量值。而且它需要是动态的,当我添加任务时,它会给它提供以前从未使用过的编号,他们会坚持使用它,当我删除任务时,它将删除该编号并且永远不会再次使用,或者它只会用于新的已创建任务。
有什么可能吗?
解决方法
如果我理解正确,为什么不向您在变量 $tasks
中收集的任务对象添加一个计算属性,该变量将包含递增的数字作为属性?
像这样:
$id = 0
$tasks = Get-ScheduledTask | Get-ScheduledTaskInfo |
ForEach-Object {
$_ | Select-Object TaskName,@{Name = 'TaskId'; Expression = {($script:id++)}},LastRunTime,LastTaskResult
}
foreach($task in $tasks) {
if ($task.LastTaskResult -eq 0){
Write-Host "0 MWT$($task.TaskId) - Scheduled task: $($task.TaskName) was succesfull"
}
else{
Write-Host "2 MWT$($task.TaskId) - Scheduled task: $($task.TaskName) has failed."
}
}