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