共用方式為


about_Scheduled_Jobs_Advanced

適用於: Windows PowerShell 3.0

主題

about_Scheduled_Jobs_Advanced

簡短描述

說明進階排程工作主題,包括構成排程工作基礎的檔案結構。

詳細描述

這個主題包含下列各節:

  • -- 已排程的工作目錄和檔案

  • -- 重新命名已排程工作

  • -- 立即開始已排程工作

  • -- 管理執行歷程記錄

已排程工作目錄和檔案

Windows PowerShell® 的已排程工作是 Windows PowerShell 工作及工作排程器工作。各項已排程工作都登錄在工作排程器中,並以 Microsoft .Net Framework 序列化 XML 格式儲存在磁碟上。

當您建立已排程工作時,Windows PowerShell 會在本機電腦上的 $home\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs 目錄中建立已排程工作目錄。目錄名稱與工作名稱相同。

以下為 ScheduledJobs 目錄範例。

        PS C:\ps-test> dir $home\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs

        Directory: C:\Users\User01\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs

        Mode                LastWriteTime     Length Name
        ----                -------------     ------ ----
        d----         9/29/2011  10:03 AM            ArchiveProjects
        d----         9/30/2011   1:18 PM            Inventory
        d----        10/20/2011   9:15 AM            Backup-Scripts
        d----         11/7/2011  10:40 AM            ProcessJob
        d----         11/2/2011  10:25 AM            SecureJob
        d----         9/27/2011   1:29 PM            Test-HelpFiles
        d----         9/26/2011   4:22 PM            DeployPackage

每個已排程工作都有自己的目錄。目錄包含已排程工作的 XML 檔案和 Output 子目錄。

        PS C:\> dir $home\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs\ProcessJob

        Directory:
        C:\Users\User1\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs\ProcessJob

        Mode                LastWriteTime     Length Name
        ----                -------------     ------ ----
        d----         11/1/2011   3:00 PM            Output
        -a---         11/1/2011   3:43 PM       7281 ScheduledJobDefinition.xml

已排程工作的 Output 目錄包含其執行歷程記錄。每次工作觸發程序開始已排程工作,Windows PowerShell 都會在 Output 目錄中建立以時間戳記為名的目錄。時間戳記目錄包含工作結果 Results.xml 檔案和工作狀態 Status.xml 檔案。

下列命令會顯示 ProcessJob 已排程工作的執行歷程記錄目錄。

        PS C:\> dir $home\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs\ProcessJob\Output

        Directory: C:\Users\User01\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs\ProcessJob\Output

        Mode                LastWriteTime     Length Name
        ----                -------------     ------ ----
        d----         11/2/2011   3:00 AM            20111102-030002-260
        d----         11/3/2011   3:00 AM            20111103-030002-277
        d----         11/4/2011   3:00 AM            20111104-030002-209
        d----         11/5/2011   3:00 AM            20111105-030002-251
        d----         11/6/2011   3:00 AM            20111106-030002-174
        d----         11/7/2011  12:00 AM            20111107-000001-914
        d----         11/7/2011   3:00 AM            20111107-030002-376


        PS C:\> dir $home\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs\ProcessJob\Output\20111102-030002-260

        Directory: C:\Users\juneb\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs\testjob\output\20111102-030002-260


        Mode                LastWriteTime     Length Name
        ----                -------------     ------ ----
        -a---         11/2/2011   3:00 AM     581106 Results.xml
        -a---         11/2/2011   3:00 AM       9451 Status.xml

您可以開啟和檢查 ScheduledJobDefinition.xml、Results.xml 和 Status.xml 檔案,或使用 Select-XML Cmdlet 剖析檔案。

警告:請勿編輯 XML 檔案。如果任何 XML 檔案包含無效的 XML,Windows PowerShell 會刪除已排程工作及其執行歷程記錄,包括工作結果。

立即開始已排程工作

立即開始已排程工作的方法有兩種:

  • -- 執行 Start-Job Cmdlet 開始任何已排程的工作

  • -- 將 RunNow 參數新增至 Register-ScheduledJob 命令,命令一執行即開始工作

使用 Start-Job Cmdlet 開始的工作都是標準的 Windows PowerShell 背景工作,不是已排程工作的執行個體。這些工作如同所有的背景工作一樣會立即開始,它們不是工作選項主體,也不受工作觸發程序影響;而且其輸出不會儲存在已排程工作目錄的 Output 目錄。

下列命令使用 Start-Job Cmdlet 的 DefinitionName 參數啟動 ProcessJob 已排程工作。

        Start-Job -DefinitionName ProcessJob

若要管理工作並取得工作結果,請使用 Job Cmdlet。如需 Job Cmdlet 的詳細資訊,請參閱 about_Jobs (https://go.microsoft.com/fwlink/?LinkID=113251)。

注意:若要對已排程工作的執行個體使用 Job Cmdlet,工作階段必須匯入 PSScheduledJob 模組。若要匯入 PSScheduledJob 模組,請輸入 "Import-Module PSScheduledJob" (不含引號),或使用任何 Scheduled Job Cmdlet,例如 Get-ScheduledJob。

重新命名已排程工作

若要重新命名已排程的工作,請使用 Set-ScheduledJob Cmdlet 的名稱參數。當您重新命名已排程工作時,Windows PowerShell 會變更已排程工作名稱和已排程工作目錄。但不會變更已經執行的已排程工作執行個體名稱。

取得開始和結束時間

若要取得工作執行個體開始和結束的日期和時間,請使用 Get-Job 傳回之已排程工作的 ScheduledJob 物件的 PSBeginTime 和 PSEndTime 屬性。

下例使用 Format-Table Cmdlet 的 Property 參數,在資料表中顯示每個工作執行個體的 PSBeginTime 和 PSEndTime 屬性。此命令使用計算內容顯示每個工作執行個體的已耗用時間。

      PS C:\> Get-job -Name UpdateHelpJob | Format-Table -Property ID, PSBeginTime, PSEndTime,
      @{Label="Elapsed Time";Expression={$_.PsEndTime - $_.PSBeginTime}}

      Id   PSBeginTime             PSEndTime                Elapsed Time
      --   -----------             ---------                ------------
       2   11/3/2011 3:00:01 AM    11/3/2011 3:00:39 AM     00:00:38.0053854
       3   11/4/2011 3:00:02 AM    11/4/2011 3:01:01 AM     00:00:59.1188475
       4   11/5/2011 3:00:02 AM    11/5/2011 3:00:50 AM     00:00:48.3692034
       5   11/6/2011 3:00:01 AM    11/6/2011 3:00:54 AM     00:00:52.8013036
       6   11/7/2011 3:00:01 AM    11/7/2011 3:00:38 AM     00:00:37.1930350
       7   11/8/2011 3:00:01 AM    11/8/2011 3:00:57 AM     00:00:56.2570556
       8   11/9/2011 3:00:03 AM    11/9/2011 3:00:55 AM     00:00:51.8142222
       9   11/10/2011 3:00:02 AM   11/10/2011 3:00:42 AM    00:00:40.7195954

管理執行歷程記錄

您可以決定每項已排程工作儲存的工作執行個體結果數,並隨時刪除任何已排程工作的執行歷程記錄和儲存的工作結果。

已排程工作的 ExecutionHistoryLength 屬性可判斷已排程工作儲存了多少工作執行個體結果。當儲存的結果數目超過 ExecutionHistoryLength 屬性的值時,Windows PowerShell 會刪除最舊的執行個體結果,以騰出空間供最新的執行個體結果使用。

Windows PowerShell 預設為每個已排程工作儲存 32 個執行個體的執行歷程記錄和結果。若要變更該值,請使用 Register-ScheduledJob 或 Set-ScheduledJob Cmdlet 的 MaxResultCount 參數。

若要刪除已排程工作的執行歷程記錄和所有結果,請使用 Set-ScheduledJob Cmdlet 的 ClearExecutionHistory 參數。刪除這份執行歷程記錄不能阻止 Windows PowerShell 儲存已排程工作的新執行個體結果。請在此處插入區段主體。

下列命令使用 Register-ScheduledJob Cmdlet 建立已排程的工作。命令使用 MaxResultCount 參數和值 12,只儲存已排程工作 12 個最新的工作執行個體結果。

        Register-ScheduledJob -Name ProcessJob -ScriptBlock {Get-Process} -MaxResultCount 12

下列命令使用 Set-ScheduledJob Cmdlet 的 MaxResultCount 參數,將儲存的執行個體結果數目提高到 15。

        Get-ScheduledJob ProcessJob | Set-ScheduledJob -MaxResultCount 15

下列命令刪除 ProcessJob 已排程工作的執行歷程記錄和所有目前已儲存的結果。

        Get-ScheduledJob ProcessJob | Set-ScheduledJob -ClearExecutionHistory

下列命令會取得電腦上所有已排程工作的名稱值和 ExecutionHistoryLength 屬性,並以資料表顯示。

        Get-ScheduledJob | Format-Table -Property Name, ExecutionHistoryLength -AutoSize

另請參閱

about_Scheduled_Jobs

about_Scheduled_Jobs_Troubleshooting

about_Jobs