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-Jobund 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 cmdletBefehl 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 Registervon 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.

Weitere Informationen