-1

我有我们的监控软件的脚本,我想监控失败或成功的 Windows 计划任务。

Powershell 脚本如下所示:

#Monitor windows tasks for checkmk raw 1.6.0
#Last update: 31.05.2021

$tasks = Get-ScheduledTask | Get-ScheduledTaskInfo | Select TaskName,LastRunTime,LastTaskResult

#CHECKMK states
#$OK = "0 MWT -"
#$Warning = "1 MWT -"
#$Crit = "2 MWT -"
#$Unknown = "3 MWT -"

$incre

foreach($task in $tasks)
{
    if($($task.LastTaskResult) -eq 0){
        $incre++
        Write-Host "0 MWT$incre - Scheduled task: $($task.TaskName) was succesfull"
    }
    else{
        $incre++
        Write-Host "2 MWT$incre - Scheduled task: $($task.TaskName) has failed."
    }
}

Clear-Variable -Name "incre"

脚本的输出是这样的:

2 MWT1 - Scheduled task: ftp has failed.
0 MWT2 - Scheduled task: Optimize Start Menu Cache Files-S-1-5-21-3586077036-2416152140-2432273966-1104 was succesfull
0 MWT3 - Scheduled task: Adobe Acrobat Update Task was succesfull
0 MWT4 - Scheduled task: FSRM_Update was succesfull

每条线路都为我们的监控软件添加服务。它需要有不同的名称,这就是我为每行 MWT1、2、3 递增值的原因。

问题是,每次运行脚本时,我都需要为每个对象设置相同的增量值。而且它需要是动态的,当我添加任务时,它会给它以前从未使用过的数字,他们会坚持使用它,当我删除任务时,它将删除该数字并且永远不会再次使用,或者它只会用于新的创建的任务。

有可能吗?

4

1 回答 1

0

如果我理解正确,为什么不将计算属性添加到您在变量中收集的任务对象中,该变量$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."
    }
}
于 2021-06-02T14:48:47.790 回答