Share via


about_Scheduled_Jobs_Advanced

Kurze Beschreibung

Erläutert erweiterte geplante Auftragsthemen, einschließlich der Dateistruktur, die geplanten Aufträgen zugrunde liegt.

Lange Beschreibung

Weitere Informationen zu den Cmdlets, die im PSScheduledJob-Modul enthalten sind, finden Sie unter PSScheduledJob.

Geplante Auftragsverzeichnisse und -dateien

Geplante PowerShell-Aufträge sind sowohl PowerShell-Aufträge als auch Aufgabenplaneraufgaben. Jeder geplante Auftrag wird im Taskplaner registriert und auf dem Datenträger im XML-Format der Serialisierung von Microsoft .NET Framework gespeichert.

Wenn Sie einen geplanten Auftrag erstellen, erstellt PowerShell ein Verzeichnis für den geplanten Auftrag im $HOME\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs Verzeichnis auf dem lokalen Computer. Der Verzeichnisname ist identisch mit dem Auftragsnamen.

Es folgt ein Beispielverzeichnis "ScheduledJobs ".

Get-ChildItem $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

Jeder geplante Auftrag verfügt über ein eigenes Verzeichnis. Das Verzeichnis enthält die XML-Datei des geplanten Auftrags und ein Ausgabeunterverzeichnis .

$Path = "$HOME\AppData\Local\Microsoft\Windows\PowerShell"
$Path += "\ScheduledJobs\ProcessJob"
Get-ChildItem $Path
Directory: C:\Users\User01\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

Das Ausgabeverzeichnis für einen geplanten Auftrag enthält den Ausführungsverlauf. Jedes Mal, wenn ein Auftragstrigger einen geplanten Auftrag startet, erstellt PowerShell ein Zeitstempel-benanntes Verzeichnis im Ausgabeverzeichnis. Das Zeitstempelverzeichnis enthält die Ergebnisse des Auftrags in einer Results.xml Datei und den Auftragsstatus in einer Status.xml Datei.

Der folgende Befehl zeigt die Ausführungsverlaufsverzeichnisse für den geplanten ProcessJob-Auftrag .

$Path = "$HOME\AppData\Local\Microsoft"
$Path += "\Windows\PowerShell\ScheduledJobs\ProcessJob\Output"
Get-ChildItem $Path
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
$Path = "$HOME\AppData\Local\Microsoft\Windows\PowerShell\"
$Path += "ScheduledJobs\ProcessJob\Output\20111102-030002-260"
Get-ChildItem $Path
Directory: C:\Users\User01\AppData\Local\Microsoft\Windows\PowerShell
               \ScheduledJobs\ProcessJob\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

Sie können die ScheduledJobDefinition.xml, Results.xml und Status.xml Dateien öffnen und untersuchen oder das Select-XML Cmdlet verwenden, um die Dateien zu analysieren.

Warnung

Bearbeiten Sie die XML-Dateien nicht. Wenn eine XML-Datei ungültiges XML enthält, löscht PowerShell den geplanten Auftrag und den Ausführungsverlauf, einschließlich Auftragsergebnissen.

Sofortiges Starten eines geplanten Auftrags

Sie können einen geplanten Auftrag sofort auf eine von zwei Arten starten:

  • Führen Sie das Start-Job Cmdlet aus, um einen geplanten Auftrag zu starten.
  • Fügen Sie den RunNow-Parameter zu Ihrem Register-ScheduledJob Befehl hinzu, um den Auftrag zu starten, sobald der Befehl ausgeführt wird.

Aufträge, die mit dem Start-Job Cmdlet gestartet werden, sind Standard-PowerShell-Hintergrundaufträge, nicht Instanzen des geplanten Auftrags. Wie alle Hintergrundaufträge beginnen diese Aufträge sofort, sie unterliegen nicht den Joboptionen oder sind von Auftragstriggern betroffen. Die Auftragsausgabe wird nicht im Ausgabeverzeichnis des geplanten Auftragsverzeichnisses gespeichert.

Der folgende Befehl verwendet den Parameter DefinitionName des Start-Job Cmdlets, um den geplanten ProcessJob-Auftrag zu starten.

Start-Job -DefinitionName ProcessJob

Verwenden Sie die Auftrags-Cmdlets, um den Auftrag zu verwalten und die Auftragsergebnisse abzurufen. Weitere Informationen zu den Auftrags-Cmdlets finden Sie unter about_Jobs.

Hinweis

Um die Auftrags-Cmdlets für Instanzen geplanter Aufträge zu verwenden, muss das PSScheduledJob-Modul in die Sitzung importiert werden. Um das PSScheduledJob-Modul zu importieren, geben Oder Import-Module PSScheduledJob verwenden Sie ein beliebiges geplantes Auftrags-Cmdlet, z Get-ScheduledJob. B. .

Umbenennen eines geplanten Auftrags

Verwenden Sie den Parameter "Name" des Set-ScheduledJob Cmdlets, um einen geplanten Auftrag umzubenennen. Wenn Sie einen geplanten Auftrag umbenennen, ändert PowerShell den Namen des geplanten Auftrags und des Verzeichniss für den geplanten Auftrag. Die Namen der Instanzen des geplanten Auftrags, die bereits ausgeführt wurden, werden jedoch nicht geändert.

Start- und Endzeiten abrufen

Verwenden Sie die PSBeginTime- und PSEndTime-Eigenschaften des ScheduledJob-Objekts, das für geplante Aufträge zurückgegeben wird, um die Datums- und Uhrzeitangaben abzurufen, Get-Job zu denen Auftragsinstanzen gestartet und beendet wurden.

Im folgenden Beispiel wird der Parameter Property des Format-Table Cmdlets verwendet, um die EIGENSCHAFTEN PSBeginTime und PSEndTime jeder Auftragsinstanz in einer Tabelle anzuzeigen. Eine berechnete Eigenschaft mit dem Namen Label zeigt die verstrichene Zeit jeder Auftragsinstanz an.

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

Verwalten des Ausführungsverlaufs

Sie können die Anzahl der Auftragsinstanzergebnisse ermitteln, die für jeden geplanten Auftrag gespeichert werden, und den Ausführungsverlauf und die gespeicherten Auftragsergebnisse eines geplanten Auftrags löschen.

Die ExecutionHistoryLength-Eigenschaft eines geplanten Auftrags bestimmt, wie viele Auftragsinstanzergebnisse für den geplanten Auftrag gespeichert werden. Wenn die Anzahl der gespeicherten Ergebnisse den Wert der ExecutionHistoryLength-Eigenschaft überschreitet, löscht PowerShell die Ergebnisse der ältesten Instanz, um Platz für die Ergebnisse der neuesten Instanz zu schaffen.

Standardmäßig speichert PowerShell den Ausführungsverlauf und die Ergebnisse von 32 Instanzen jedes geplanten Auftrags. Verwenden Sie zum Ändern dieses Werts die MaxResultCount-Parameter der Register-ScheduledJob Oder Set-ScheduledJob Cmdlets.

Um den Ausführungsverlauf und alle Ergebnisse für einen geplanten Auftrag zu löschen, verwenden Sie den ClearExecutionHistory-Parameter des Set-ScheduledJob Cmdlets. Das Löschen dieses Ausführungsverlaufs verhindert nicht, dass PowerShell die Ergebnisse neuer Instanzen des geplanten Auftrags speichert.

Im folgenden Beispiel wird das Splatting verwendet, um zu erstellen $JobParms , welche Parameterwerte an das Register-ScheduledJob Cmdlet übergeben werden. Weitere Informationen finden Sie unter about_Splatting.md. Die Register-ScheduledJob Verwendung zum @JobParms Erstellen eines geplanten Auftrags. Der Befehl verwendet den Parameter "MaxResultCount " mit dem Wert 12, um nur die 12 neuesten Auftragsinstanzergebnisse des geplanten Auftrags zu speichern.

$JobParms = @{
  Name = "ProcessJob"
  ScriptBlock = {Get-Process}
  MaxResultCount = "12"
}

Register-ScheduledJob @JobParms

Der folgende Befehl verwendet den Parameter "MaxResultCount " des Set-ScheduledJob Cmdlets, um die Anzahl der gespeicherten Instanzenergebnisse auf 15 zu erhöhen.

Get-ScheduledJob ProcessJob | Set-ScheduledJob -MaxResultCount 15

Der folgende Befehl löscht den Ausführungsverlauf und die aktuellen gespeicherten Ergebnisse des geplanten ProcessJob-Auftrags .

Get-ScheduledJob ProcessJob | Set-ScheduledJob -ClearExecutionHistory

Mit dem folgenden Befehl werden die Werte der Eigenschaften "Name" und "ExecutionHistoryLength " aller geplanten Aufträge auf dem Computer abgerufen und in einer Tabelle angezeigt.

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

Weitere Informationen