Windows-Server-2008

如何在 powershell 腳本中列印有關任務計劃程序的資訊?

  • June 12, 2014

我正在嘗試Task Scheduler在腳本中從本地電腦列印出資訊,PowerShell以便其他使用者也可以列印出此資訊而不必訪問Task Scheduler. 我需要腳本列印出來

  • 姓名,
  • 地位,
  • 觸發器,
  • 下次執行時間,
  • 上次執行時間,
  • 上次執行結果,
  • 作者,
  • 創建的。

我可以列印出有關名稱、下次執行時間和上次執行時間的資訊,但是當我執行腳本時,其他資訊不會列印出來。

我已經對我的劇本有了一點點的了解,並且把這些領域搞定了。

$schedule = new-object -com("Schedule.Service") 
$schedule.connect() 
$tasks = $schedule.getfolder("\").gettasks(0)

$tasks | select Name,Status,Triggers,NextRunTime,LastRunTime,LastRunResult,Author,Created | ft

foreach ($t in $tasks)
{
foreach ($a in $t.Actions)
{
$a.Path
}
}

任何幫助或建議將不勝感激。

下面是我正在尋找的螢幕截圖以及哪些欄位沒有列印出數據:

下面是我正在尋找的螢幕截圖以及哪些欄位沒有列印出數據:

這可以稍微清理一下(即映射 LastRunResult 程式碼)。如果您需要幫助,請告訴我。觸發器有點困難,因為我認為您在 GUI 中查看任務時看到的純英文表示不存在於 COM 對像中。我相信它必須從TriggerCollection儲存的RegisteredTask.Definition.Triggers

$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"}}
       "NextRunTime" = $_.NextRunTime
       "LastRunTime" = $_.LastRunTime
       "LastRunResult" = $_.LastTaskResult
       "Author" = $xml.Task.Principals.Principal.UserId
       "Created" = $xml.Task.RegistrationInfo.Date
   }
}

$out | fl Name,Status,NextRuNTime,LastRunTime,LastRunResult,Author,Created

引用自:https://serverfault.com/questions/604673