Powershell对象引用未设置为对象的实例

时间:2019-02-27 16:29:00

标签: powershell

以下循环构成Powershell脚本的一部分,该脚本循环遍历Windows Tasks Schedules,然后发送包含状态和持续时间等的电子邮件。但是,当它执行以下循环时,我会收到erorr:

New-TimeSpan : Cannot bind parameter 'Start' to the target. Exception setting "Start": "Object reference not set to an instance of an object."

这是循环:

foreach ($Task in $Tasks){
    switch -Regex ($Task){
        {$DailyTasks -contains $Task}{
            $TaskRunTime = (Get-ScheduledTaskInfo "$Task").LastRunTime
            $Difference = (New-TimeSpan -Start $TaskRunTime).TotalHours
            $IntervalCheck = 12

            switch -Regex ($Difference){
                {($Difference -gt "$IntervalCheck")}{
                    $Status = "BAD"

                    $EmailTemp = @"
    <tr>
        <td class="colorm">$Task</td>
        <td class="colorr">$Status</td>
    </tr>
"@
                }
                {$Difference -lt "$IntervalCheck"}{
                    $Status = "OK"

                    $EmailTemp = @"
    <tr>
        <td class="colorm">$Task</td>
        <td>$Status</td>
    </tr>

我想念什么?

1 个答案:

答案 0 :(得分:0)

您的任务可能从未执行过,所以$ TaskRunTime是$ null吗?在这种情况下,您需要处理一个可能为null的值。

我不确定您的$ Task是任务对象还是只是字符串...。如果只是字符串,则必须运行以获得上次运行时间:

toD