微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

powershell递增值并每次都为同一个对象赋予相同的值

如何解决powershell递增值并每次都为同一个对象赋予相同的值

我有监控软件的脚本,我想监控失败或成功的 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."
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。