我希望看到“操作”不为空的所有任务计划程序作业。
我从这个链接获得了初始代码: Task Scheduler in powershell script
例如,我不希望看到名为“优化开始菜单缓存文件”的计划任务,因为“操作”为空。
$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 :(得分:1)
这适用于比Windows 7更新的任何内容。
get-scheduledtask |Where-Object {$_.actions -NE $Null -OR $_.actions -NE "" }
答案 1 :(得分:0)
我最终选择了以下内容,但是在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*"