about_Scheduled_Jobs
Letzte Aktualisierung: Mai 2014
Betrifft: Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0
THEMA
about_Scheduled_Jobs
KURZE BESCHREIBUNG
Beschreibt geplante Aufträge und erläutert, wie geplante Aufträge in Windows PowerShell® und in der Aufgabenplanung verwendet und verwaltet werden.
LANGE BESCHREIBUNG
In Windows PowerShell geplante Aufträge sind eine nützliche Kombination aus Windows PowerShell-Hintergrundaufträgen und Aufgaben der Aufgabenplanung.
Windows PowerShell-Hintergrundaufträge werden genau wie geplante Aufträge asynchron im Hintergrund ausgeführt. Instanzen von geplanten und bereits ausgeführten Aufträgen können mithilfe der Job-Cmdlets verwaltet werden, wie z. B. „Start-Job“, „Get-Job“, „Stop-Job“ und „Receive-Job“.
Ebenso wie Aufgaben der Aufgabenplanung werden geplante Aufträge auf einem Datenträger gespeichert. In der Aufgabenplanung können Sie die Aufträge anzeigen und verwalten, nach Bedarf aktivieren und deaktivieren, ausführen oder als Vorlagen verwenden. Sie können auch einmalige oder sich wiederholende Zeitpläne zum Starten der Aufträge einrichten oder Bedingungen festlegen, unter denen die Aufträge gestartet werden.
Darüber hinaus werden die Ergebnisse der geplanten Auftragsinstanzen in einem leicht zugänglichen Format auf einem Datenträger gespeichert und stellen so ein Ausführungsprotokoll der Auftragsausgaben bereit. Geplante Aufträge enthalten einen benutzerdefinierten Satz von Cmdlets für die Verwaltung. Mit den Cmdlets können Sie geplante Aufträge, Auftragstrigger und Auftragsoptionen erstellen, bearbeiten, verwalten, deaktivieren und erneut aktivieren.
Dank dieser umfassenden und flexiblen Tools sind geplante Aufträge ein wesentlicher Bestandteil vieler professioneller Windows PowerShell-IT-Lösungen.
Die Cmdlets für geplante Aufträge sind im PSScheduledJob-Modul enthalten, das mit Windows PowerShell installiert wird. Dieses Modul wurde in Windows PowerShell 3.0 eingeführt und lässt sich in Windows PowerShell 3.0 und höheren Versionen von Windows PowerShell einsetzen.
Weitere Informationen zu Windows PowerShell-Hintergrundaufträgen finden Sie unter „about_Jobs“ (https://go.microsoft.com/fwlink/?LinkID=113251).
Weitere Informationen zur Aufgabenplanung finden Sie im Thema „Aufgabenplanung“ in der TechNet-Bibliothek unter https://go.microsoft.com/fwlink/?LinkId=232928.
HINWEIS: Sie können geplante Windows PowerShell-Aufträge in der Aufgabenplanung anzeigen und verwalten, die Windows PowerShell-Cmdlets für Aufträge und geplante Aufträge funktionieren jedoch nur mit geplanten Aufträgen, die in Windows PowerShell erstellt wurden.
CMDLETS FÜR GEPLANTE AUFTRÄGE
Das PSScheduledJob-Modul enthält die folgenden Cmdlets.
Register-ScheduledJob: Creates a scheduled job.
Get-ScheduledJob: Gets a scheduled job.
Set-ScheduledJob: Changes the properties of a scheduled job
Disable-ScheduledJob: Temporarily disables a scheduled job.
Enable-ScheduledJob: Re-enables a scheduled job.
Unregister-ScheduledJob Deletes a scheduled job and its saved results.
New-JobTrigger: Creates a job trigger.
Get-JobTrigger: Gets a job trigger.
Add-JobTrigger: Adds a job trigger to a scheduled job.
Set-JobTrigger: Changes a job trigger.
Disable-JobTrigger: Temporarily disables a job trigger.
Enable-JobTrigger: Re-enables a job trigger.
Remove-JobTrigger: Deletes a job trigger.
New-ScheduledJobOption: Creates a job options object.
Get-ScheduledJobOption: Gets the job options of a scheduled job.
Set-ScheduledJobOption: Changes the job options of a scheduled job.
SCHNELLSTART
Die folgenden Befehle erstellen einen geplanten Auftrag, der täglich um 3:00 Uhr startet und das Cmdlet „Get-Process“ ausführt. Der Auftrag wird auch dann gestartet, wenn der Computer im Akkubetrieb ausgeführt wird.
$trigger = New-JobTrigger -Daily -At 3AM
$options = New-ScheduledJobOption -StartIfOnBattery
Register-ScheduledJob -Name ProcessJob -ScriptBlock {Get-Process} `
-Trigger $trigger -ScheduledJobOption $options
Der folgende Befehl ruft die geplanten Aufträge auf dem lokalen Computer ab.
PS C:\> Get-ScheduledJob
Id Name Triggers Command Enabled
-- ---- -------- ------- -------
7 ProcessJob {1} Get-Process True
Der folgende Befehl ruft die Auftragstrigger von „ProcessJob“ ab. Die Eingabeparameter geben den geplanten Auftrag an, nicht den Trigger, da Trigger in einem geplanten Auftrag gespeichert werden.
PS C:\> Get-JobTrigger -Name ProcessJob
Id Frequency Time DaysOfWeek Enabled
-- --------- ---- ---------- -------
1 Daily 11/5/2011 3:00:00 AM True
Der folgende Befehl verwendet den ContinueIfGoingOnBattery-Parameter des Set-ScheduledJob-Cmdlets, um die StopIfGoingOnBatteries-Eigenschaft von „ProcessJob“ in „false“ zu ändern.
PS C:\> Get-ScheduledJob -Name ProcessJob | Set-ScheduledJobOption `
-ContinueIfGoingOnBattery -Passthru
StartIfOnBatteries : True
StopIfGoingOnBatteries : False
WakeToRun : True
StartIfNotIdle : True
StopIfGoingOffIdle : False
RestartOnIdleResume : False
IdleDuration : 00:10:00
IdleTimeout : 01:00:00
ShowInTaskScheduler : True
RunElevated : False
RunWithoutNetwork : True
DoNotAllowDemandStart : False
MultipleInstancePolicy : IgnoreNew
JobDefinition : Microsoft.PowerShell.ScheduledJob.ScheduledJobDefinition
Der folgende Befehl ruft den geplanten „ProcessJob“-Auftrag ab.
PS C:\> Get-ScheduledJob ProcessJob
Id Name Triggers Command Enabled
-- ---- -------- ------- -------
7 ProcessJob {1} Get-Process True
Der folgende Befehl verwendet das Get-Job-Cmdlet, um alle Instanzen des geplanten „ProcessJob“-Auftrags abzurufen, die bisher ausgeführt wurden. Das Get-Job-Cmdlet ruft geplante Aufträge nur ab, wenn das PSScheduledJob-Modul in die aktuelle Sitzung importiert wurde.
TIPP: Beachten Sie Folgendes: Zum Verwalten geplanter Aufträge verwenden Sie die ScheduledJob-Cmdlets, zum Verwalten von Instanzen geplanter Aufträge verwenden Sie die Job-Cmdlets.
PS C:\> Get-Job -Name ProcessJob
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------ ----- ----------- -------- -------
45 ProcessJob PSScheduledJob Completed True localhost Get-Process
46 ProcessJob PSScheduledJob Completed True localhost Get-Process
47 ProcessJob PSScheduledJob Completed True localhost Get-Process
48 ProcessJob PSScheduledJob Completed True localhost Get-Process
49 ProcessJob PSScheduledJob Completed True localhost Get-Process
50 ProcessJob PSScheduledJob Completed True localhost Get-Process
51 ProcessJob PSScheduledJob Completed True localhost Get-Process
Der folgende Befehl ruft die Ergebnisse der neuesten Instanz des geplanten Auftrags „ProcessJob“ (ID = 51) ab.
Receive-Job -ID 51
Obwohl der Receive-Job-Befehl keinen Keep-Parameter enthält, werden die Ergebnisse des Auftrags auf dem Datenträger gespeichert, bis Sie sie löschen oder die maximale Anzahl von Ergebnissen überschritten wird.
Die Auftragsergebnisse sind in der aktuellen Sitzung nicht mehr verfügbar, wenn Sie jedoch eine neue Sitzung starten oder ein neues Windows PowerShell-Fenster öffnen, stehen die Ergebnisse wieder zur Verfügung.
Der folgende Befehl verwendet den Parameter DefinitionName des Cmdlets Start-Job zum Starten des geplanten Auftrags ProcessJob.
Bei Aufträgen, die mit dem Cmdlet Start-Job gestartet werden, handelt es sich um standardmäßige Windows PowerShell-Hintergrundaufträge, nicht um Instanzen des geplanten Auftrags. Wie alle Hintergrundaufträge werden diese Aufträge sofort gestartet – sie unterliegen weder Auftragsoptionen, noch sind sie von Auftragstriggern betroffen – und ihre Ausgabe wird nicht im Verzeichnis Output des geplanten Auftrags gespeichert.
PS C:\>Start-Job -DefinitionName ProcessJob
Der folgende Befehl löscht den geplanten Auftrag „ProcessJob“ und alle gespeicherten Ergebnisse der zugehörigen Auftragsinstanzen.
PS C:\> Remove-ScheduledJob ProcessJob
GEPLANTE AUFTRÄGE – KONZEPTE
Ein „geplanter Auftrag“ führt Befehle oder ein Skript aus. Ein geplanter Auftrag kann „Auftragstrigger“ umfassen, die den Auftrag starten, sowie „Auftragsoptionen“ enthalten, die die Bedingungen für die Auftragsausführung festlegen.
Ein „Auftragstrigger“ startet einen geplanten Auftrag automatisch. Ein Auftragstrigger kann einen einmaligen oder sich wiederholenden Zeitplan enthalten oder ein Ereignis festlegen, z. B. die Anmeldung eines Benutzers oder den Start von Windows. Ein geplanter Auftrag kann über einen oder mehrere Auftragstrigger verfügen, und Sie können Auftragstrigger erstellen, hinzufügen, aktivieren, deaktivieren und abrufen.
Auftragstrigger sind optional. Sie können geplante Aufträge auch sofort starten, indem Sie das Start-Job-Cmdlet verwenden oder Ihrem Register-ScheduledJob-Befehl den RunNow-Parameter hinzufügen.
„Auftragsoptionen“ legen die Bedingungen zum Ausführen eines geplanten Auftrags fest. Jeder geplante Auftrag besitzt ein Auftragsoptionsobjekt. Sie können Auftragsoptionsobjekte erstellen und bearbeiten sowie einem oder mehreren geplanten Aufträgen hinzufügen.
Bei jedem Start eines geplanten Auftrags wird eine „Auftragsinstanz“ erstellt. Verwenden Sie die Job-Cmdlets von Windows PowerShell zum Anzeigen und Verwalten der Auftragsinstanz.
Geplante Aufträge werden auf einem Datenträger gespeichert (daher das Cmdlet-Verb „Register“ statt „New“), und zwar auf dem lokalen Computer in XML-Dateien im Verzeichnis „$home\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs“.
Windows PowerShell erstellt ein Verzeichnis für jeden geplanten Auftrag und speichert die Befehle, Trigger, Optionen und Ergebnisse des Auftrags in diesem Verzeichnis. Auftragstrigger und -optionen werden nicht unabhängig auf den Datenträger gespeichert. Sie werden in der XML-Datei für jeden geplanten Auftrag gespeichert, dem sie zugeordnet sind.
Geplante Aufträge, Auftragstrigger und Auftragsoptionen sind Objekte in Windows PowerShell. Objekte sind miteinander verbunden, sodass sie leicht zu finden und in Befehlen und Skripts zu verwenden sind.
Geplante Aufträge werden als ScheduledJobDefinition-Objekte angezeigt. Das ScheduledJobDefinition-Objekt besitzt eine JobTriggers-Eigenschaft, welche die Auftragstrigger des geplanten Auftrags enthält, und eine Options-Eigenschaft, welche die Auftragsoptionen enthält. Die Objekte „ScheduledJobTriggers“ und „ScheduledJobOptions“, die Auftragstrigger bzw. Auftragsoptionen darstellen, besitzen jeweils eine JobDefinition-Eigenschaft, die den geplanten Auftrag enthält, dem sie zugeordnet sind. Dank dieser rekursiven Verbindung lassen sich die Trigger und Optionen eines geplanten Auftrags problemlos auffinden. Auch der geplante Auftrag, dem ein Auftragstrigger oder eine Auftragsoption zugeordnet ist, lässt sich einfach ermitteln, in einem Skript verarbeiten und anzeigen.
SIEHE AUCH
about_Scheduled_Jobs_Basics
about_Scheduled_Jobs_Advanced
about_Scheduled_Jobs_Troubleshooting
about_jobs
Aufgabenplanung (https://go.microsoft.com/fwlink/?LinkId=232928)
Add-JobTrigger
Disable-JobTrigger
Disable-ScheduledJob
Enable-JobTrigger
Enable-ScheduledJob
Get-Job
Get-JobTrigger
Get-ScheduledJob
Get-ScheduledJobOption
New-JobTrigger
New-ScheduledJobOption
Receive-Job
Register-ScheduledJob
Remove-JobTrigger
Set-JobTrigger
Set-ScheduledJob
Set-ScheduledJobOption
Start-Job
Unregister-ScheduledJob