Я хочу видеть все задания планировщика заданий, где «Действия» не пустые.

Я получил исходный код по этой ссылке: Планировщик задач в сценарии PowerShell

Например, я не хочу видеть запланированные задачи с названием «Оптимизировать файлы кэша меню« Пуск »», потому что «Действия» пусты.

$sched = New-Object -Com "Schedule.Service"
$sched.Connect()
$out = @()
$sched.GetFolder("\").GetTasks(0) | % {
    $xml = [xml]$_.xml

    $out += New-Object PSObject -Property @{
        "Name" = $_.Name
        "Status" = switch ($_.State) {0 {"Unknown"} 1 {"Disabled"} 2 {"Queued"} 3 {"Ready"} 4 {"Running"}}
        "Actions" = ($xml.Task.Actions.Exec | % { "$($_.Command) $($_.Arguments)" }) -join "`n"
        "NextRunTime" = $_.NextRunTime
        "LastRunTime" = $_.LastRunTime
        "LastRunResult" = $_.LastTaskResult
        "Author" = $xml.Task.Principals.Principal.UserId
        "Created" = $xml.Task.RegistrationInfo.Date
    }
}

$out | fl Name,Status,Actions,NextRuNTime,LastRunTime,LastRunResult,Author,Created | Where-Object {($_.Actions -ne "" -and $_.Actions -eq "*powershell*" -or $_.Actions -ne $null)}
0
Jeremy F. 13 Мар 2018 в 17:42

2 ответа

Лучший ответ

В итоге я выбрал следующее, однако у меня не может быть нескольких предложений в инструкции where.

$sched = New-Object -Com "Schedule.Service"
$sched.Connect()
$out = @()
$sched.GetFolder("\").GetTasks(0) | % {
    $xml = [xml]$_.xml

    $out += New-Object PSObject -Property @{
        "Name" = $_.Name
        "Status" = switch ($_.State) {0 {"Unknown"} 1 {"Disabled"} 2 {"Queued"} 3 {"Ready"} 4 {"Running"}}
        "Actions" = ($xml.Task.Actions.Exec | % { "$($_.Command) $($_.Arguments)" }) -join "`n"
        "NextRunTime" = $_.NextRunTime
        "LastRunTime" = $_.LastRunTime
        "LastRunResult" = $_.LastTaskResult
        "Author" = $xml.Task.Principals.Principal.UserId
        "Created" = $xml.Task.RegistrationInfo.Date
    }
}

$out |Where Actions -like "*powershell*"
0
Jeremy F. 19 Мар 2018 в 18:38

Это будет работать со всем, что новее Windows 7.

get-scheduledtask |Where-Object {$_.actions -NE $Null -OR $_.actions -NE "" }
1
Nick W. 13 Мар 2018 в 19:28