about_Scheduled_Jobs
Kurze Beschreibung
Beschreibt geplante Aufträge und erläutert, wie geplante Aufträge in PowerShell und in Task Scheduler verwendet und verwaltet werden.
Lange Beschreibung
Geplante PowerShell-Aufträge sind eine nützliche Hybridlösung von PowerShell-Hintergrundaufträgen und Aufgabenplaneraufgaben.
Wie PowerShell-Hintergrundaufträge werden geplante Aufträge asynchron im Hintergrund ausgeführt. Instanzen von geplanten Aufträgen, die ausgeführt werden, können mithilfe der Auftrags-Cmdlets verwaltet werden, z Start-Job
. B. , , Get-Job
, Stop-Job
und Receive-Job
.
Wie Aufgabenplanungsaufgaben werden geplante Aufträge auf dem Datenträger gespeichert. Sie können die Aufträge im Taskplaner anzeigen und verwalten, sie nach Bedarf aktivieren und deaktivieren, sie ausführen oder als Vorlagen verwenden, einen einmaligen oder wiederkehrenden Zeitplan für den Beginn der Aufträge einrichten oder Bedingungen festlegen, unter denen die Aufträge beginnen.
Darüber hinaus werden die Ergebnisse von geplanten Auftragsinstanzen auf dem Datenträger in einem leicht zugänglichen Format gespeichert, wodurch ein laufendes Protokoll der Auftragsausgabe bereitgestellt wird. Geplante Aufträge enthalten einen benutzerdefinierten Satz von Cmdlets für die Verwaltung. Mit den Cmdlets können Sie geplante Aufträge, Auftragsauslöser und Auftragsoptionen erstellen, bearbeiten, verwalten, deaktivieren und erneut aktivieren.
Dieser umfassende und flexible Satz von Tools macht geplante Aufträge zu einem wesentlichen Bestandteil vieler professioneller PowerShell-IT-Lösungen.
Die geplanten Auftrags-Cmdlets sind im PSScheduledJob-Modul enthalten, das mit PowerShell installiert ist. Dieses Modul wurde in PowerShell 3.0 eingeführt und funktioniert in PowerShell 3.0 und höheren Versionen von PowerShell. Weitere Informationen zu den Cmdlets, die im PSScheduledJob-Modul enthalten sind, finden Sie unter PSScheduledJob.
Weitere Informationen zu PowerShell-Hintergrundaufträgen finden Sie unter about_Jobs.
Weitere Informationen zum Taskplaner finden Sie unter "Task Scheduler".
Hinweis
Sie können geplante PowerShell-Aufträge in Task Scheduler anzeigen und verwalten. Die PowerShell-Aufträge und geplanten Auftrags-Cmdlets funktionieren nur bei geplanten Aufträgen, die in PowerShell erstellt werden.
Schnellstart
In diesem Beispiel wird ein geplanter Auftrag erstellt, der täglich um 3:00 Uhr beginnt und das Get-Process
Cmdlet ausführt. Der Auftrag beginnt auch dann, wenn der Computer auf Batterien läuft.
$trigger = New-JobTrigger -Daily -At 3AM
$options = New-ScheduledJobOption -StartIfOnBattery
Register-ScheduledJob -Name ProcessJob -ScriptBlock {Get-Process} `
-Trigger $trigger -ScheduledJobOption $options
Das Get-ScheduledJob
Cmdlet ruft die geplanten Aufträge auf dem lokalen Computer ab.
Get-ScheduledJob
Id Name Triggers Command Enabled
-- ---- -------- ------- -------
7 ProcessJob {1} Get-Process True
Get-JobTrigger
ruft die Auftragstrigger von ProcessJob ab. Die Eingabeparameter geben den geplanten Auftrag und nicht den Trigger an, da Trigger in einem geplanten Auftrag gespeichert werden.
Get-JobTrigger -Name ProcessJob
Id Frequency Time DaysOfWeek Enabled
-- --------- ---- ---------- -------
1 Daily 11/5/2011 3:00:00 AM True
In diesem Beispiel wird der Parameter ContinueIfGoingOnBattery des Set-ScheduledJob
Cmdlets verwendet, um die StopIfGoingOnBatteries-Eigenschaft von ProcessJob in False zu ändern.
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
Das Get-ScheduledJob
Cmdlet ruft den geplanten ProcessJob-Auftrag ab.
Get-ScheduledJob ProcessJob
Id Name Triggers Command Enabled
-- ---- -------- ------- -------
7 ProcessJob {1} Get-Process True
Das Get-Job
Cmdlet ruft alle Instanzen des geplanten ProcessJob-Auftrags ab, die bisher ausgeführt wurden. Das Get-Job
Cmdlet ruft geplante Aufträge nur ab, wenn das PSScheduledJob-Modul in die aktuelle Sitzung importiert wird.
Tipp
Beachten Sie, dass Sie die geplanten Auftrags-Cmdlets zum Verwalten geplanter Aufträge verwenden, aber Sie verwenden die Auftrags-Cmdlets zum Verwalten von Instanzen geplanter Aufträge.
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
Das Receive-Job
Cmdlet ruft die Ergebnisse der letzten Instanz des geplanten ProcessJob-Auftrags ab (ID = 51).
Receive-Job -ID 51
Obwohl der Receive-Job
Befehl den Parameter Keep nicht enthält, werden die Ergebnisse des Auftrags auf dem Datenträger gespeichert, bis Sie sie löschen oder die maximale Anzahl von Ergebnissen überschritten werden.
Die Auftragsergebnisse sind in dieser Sitzung nicht mehr verfügbar, aber wenn Sie eine neue Sitzung starten oder ein neues PowerShell-Fenster öffnen, sind die Ergebnisse des Auftrags wieder verfügbar.
Der folgende Befehl verwendet den Parameter DefinitionName des Start-Job
Cmdlets, um den geplanten ProcessJob-Auftrag zu starten.
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 Auftragsoptionen oder sind von Auftragstriggern betroffen, und ihre Ausgabe wird nicht im Ausgabeverzeichnis des Verzeichniss für geplante Aufträge gespeichert.
Start-Job -DefinitionName ProcessJob
Das Unregister-ScheduledJob
Cmdlet löscht den geplanten ProcessJob-Auftrag und alle gespeicherten Ergebnisse seiner Auftragsinstanzen.
Unregister-ScheduledJob ProcessJob
Konzepte geplanter Aufträge
Ein geplanter Auftrag führt Befehle oder ein Skript aus. Ein geplanter Auftrag kann Auftragsauslöser enthalten, die den Auftrag starten, und Auftragsoptionen, die Bedingungen für die Ausführung des Auftrags festlegen.
Ein Auftragstrigger startet automatisch einen geplanten Auftrag. Ein Auftragstrigger kann einen einmaligen oder wiederkehrenden Zeitplan enthalten oder ein Ereignis angeben, z. B. wenn sich ein Benutzer anmeldet oder Windows startet. Ein geplanter Auftrag kann einen oder mehrere Auftragstrigger aufweisen, und Sie können Auftragstrigger erstellen, hinzufügen, aktivieren, deaktivieren und abrufen.
Auftragstrigger sind optional. Sie können geplante Aufträge sofort starten, indem Sie den Start-Job cmdlet
Befehl verwenden oder den RunNow-Parameter zu Ihrem Register-ScheduledJob
Befehl hinzufügen.
Auftragsoptionen legen die Bedingungen für die Ausführung eines geplanten Auftrags fest. Jeder geplante Auftrag verfügt über ein Auftragsoptionenobjekt. Sie können Auftragsoptionenobjekte erstellen und bearbeiten und zu einem oder mehreren geplanten Aufträgen hinzufügen.
Jedes Mal, wenn ein geplanter Auftrag gestartet wird, wird eine Auftragsinstanz erstellt. Verwenden Sie die PowerShell-Auftrags-Cmdlets, um die Auftragsinstanz anzuzeigen und zu verwalten.
Geplante Aufträge werden auf dem Datenträger gespeichert und verwenden das Cmdlet-Verb anstelle Register
von New
. Die XML-Dateien befinden sich auf dem lokalen Computer im Verzeichnis $HOME\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs
.
PowerShell erstellt ein Verzeichnis für jeden geplanten Auftrag und speichert die Auftragsbefehle, Auftragsauslöser, Auftragsoptionen und Auftragsergebnisse im Verzeichnis des geplanten Auftrags. Auftragsauslöser und Auftragsoptionen werden nicht unabhängig auf dem Datenträger gespeichert. Sie werden im XML-Code des geplanten Auftrags jedes geplanten Auftrags gespeichert, dem sie zugeordnet sind.
Geplante Aufträge, Auftragsauslöser und Auftragsoptionen werden in PowerShell als Objekte angezeigt. Die Objekte sind miteinander verknüpft, wodurch sie leicht zu erkennen und in Befehlen und Skripts zu verwenden sind.
Geplante Aufträge werden als ScheduledJobDefinition-Objekte angezeigt. Das ScheduledJobDefinition -Objekt verfügt über eine JobTriggers -Eigenschaft, die die Auftragstrigger des geplanten Auftrags und eine Options-Eigenschaft enthält, die die Auftragsoptionen enthält. Die Objekte ScheduledJobTriggers und ScheduledJobOptions , die Auftragsauslöser bzw. Auftragsoptionen darstellen, weisen jeweils eine JobDefinition-Eigenschaft auf, die den geplanten Auftrag enthält, dem sie zugeordnet sind. Diese rekursive Verbindung erleichtert das Auffinden der Trigger und Optionen eines geplanten Auftrags sowie das Suchen, Skripten und Anzeigen des geplanten Auftrags, dem ein Auftragstrigger oder eine Auftragsoption zugeordnet ist.