Freigeben über


about_Scheduled_Jobs_Basics

Kurze Beschreibung

Erläutert das Erstellen und Verwalten geplanter Aufträge.

Lange Beschreibung

In diesem Dokument wird gezeigt, wie Sie grundlegende Aufgaben beim Erstellen und Verwalten von geplanten Aufträgen ausführen. Weitere Informationen zu erweiterten Aufgaben finden Sie unter about_Scheduled_Jobs_Advanced.

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

So wird's gemacht: Erstellen eines geplanten Auftrags

Verwenden Sie das Register-ScheduledJob Cmdlet, um einen geplanten Auftrag zu erstellen. Das Cmdlet erfordert einen Namen und die Befehle oder Skripts, die der Auftrag ausführt. Sie können den Auftrag entweder sofort ausführen, indem Sie den RunNow-Parameter hinzufügen oder einen Auftragsauslöser erstellen und Joboptionen festlegen, wenn Sie den Auftrag erstellen oder einen vorhandenen Auftrag bearbeiten.

Um einen Auftrag zu erstellen, der ein Skript ausführt, verwenden Sie den FilePath-Parameter , um den Pfad zur Skriptdatei anzugeben. Verwenden Sie den ScriptBlock-Parameter, um einen Auftrag zu erstellen, der Befehle ausführt.

Das Register-ScheduledJob Cmdlet erstellt den ProcessJob, der einen Get-Process Befehl ausführt. Dieser geplante Auftrag verfügt über die Standardauftragsoptionen und keinen Auftragsauslöser.

Register-ScheduledJob -Name ProcessJob -ScriptBlock { Get-Process }
Id         Name            Triggers        Command       Enabled
--         ----            --------        -------       -------
8          ProcessJob      {}              Get-Process   True

So wird's gemacht: Erstellen eines Auftragstriggers

Auftragstrigger starten automatisch einen geplanten Auftrag. Ein Auftragstrigger kann ein einmaliger oder wiederkehrender Zeitplan oder ein Ereignis sein, z. B. wenn sich ein Benutzer anmeldet oder Windows startet. Jeder Auftrag kann null, eins oder mehrere Auftragstrigger aufweisen.

Verwenden Sie das New-JobTrigger Cmdlet, um einen Auftragstrigger zu erstellen. Mit dem folgenden Befehl wird ein Auftragstrigger erstellt, der jeden Montag und Donnerstag um 5:00 Uhr einen Auftrag startet. Der Befehl speichert den Auftragstrigger in der $T Variablen.

$T = New-JobTrigger -Weekly -DaysOfWeek "Monday", "Thursday" -At "5:00 AM"

Auftragstrigger sind optional. Sie können einen geplanten Auftrag jederzeit starten, indem Sie den RunNow-Parameter zu Ihrem Register-ScheduledJob Befehl hinzufügen oder die Start-Job Cmdlets verwenden.

So wird's gemacht: Hinzufügen eines Auftragstriggers

Wenn Sie einen Auftragtrigger zu einem geplanten Auftrag hinzufügen, wird der Auftragstrigger der XML-Datei des geplanten Auftrags für den geplanten Auftrag hinzugefügt und teil des geplanten Auftrags.

Sie können einem geplanten Auftrag einen Auslöser hinzufügen, wenn Sie den geplanten Auftrag erstellen oder einen vorhandenen Auftrag bearbeiten. Sie können den Auftragsauslöser eines geplanten Auftrags jederzeit ändern.

PowerShell verwendet einige der gleichen Auftragsauslöser, die der Taskplaner verwendet. Ausführliche Informationen zu Auftragstriggern finden Sie im Hilfethema zum Cmdlet New-JobTrigger .

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. Er verwendet den Trigger-Parameter , um den Auftragstrigger in der $T Variablen anzugeben.

$JobParms = @{
  Name = "ProcessJob"
  ScriptBlock = {Get-Command}
  Trigger = $T
}

Register-ScheduledJob @JobParms

Sie können auch jederzeit einen Auftragsauslöser zu einem vorhandenen geplanten Auftrag hinzufügen. Das Add-JobTrigger Cmdlet fügt den Auftragstrigger in der $T Variablen zum geplanten ProcessJob-Auftrag hinzu.

Add-JobTrigger -Name ProcessJob -Trigger $T

Daher startet der Auftragstrigger den ProcessJob automatisch jeden Montag und Donnerstag um 5:00 Uhr.

So wird's gemacht: Abrufen eines Auftragstriggers

Verwenden Sie das Get-JobTrigger Cmdlet, um den Auftragstrigger eines geplanten Auftrags abzurufen. Verwenden Sie die Parameter Name, ID und InputObject , um den geplanten Auftrag und nicht den Auftragstrigger anzugeben.

Get-JobTriggerruft den Auftragstrigger des ProcessJob ab.

Get-JobTrigger -Name ProcessJob
Id   Frequency       Time                   DaysOfWeek              Enabled
--   ---------       ----                   ----------              -------
1    Weekly          11/7/2011 5:00:00 AM   {Monday, Thursday}      True

So wird's gemacht: Erstellen von Auftragsoptionen

Auftragsoptionen legen Bedingungen für das Starten und Ausführen des Auftrags fest. Jeder Auftrag verfügt über die Standardauftragsoptionen, es sei denn, Sie ändern sie. Da Joboptionen verhindern können, dass ein Auftrag zur geplanten Zeit ausgeführt wird, ist es wichtig, die Auftragsoptionen zu verstehen und sorgfältig zu verwenden.

PowerShell verwendet dieselben Auftragsoptionen, die der Taskplaner verwendet. Ausführliche Informationen zu den Auftragsoptionen finden Sie im Hilfethema zu New-ScheduledJobOption.

Auftragsoptionen werden in der XML-Datei des geplanten Auftrags gespeichert. Sie können Joboptionen festlegen, wenn Sie einen geplanten Auftrag erstellen oder sie jederzeit ändern.

Das New-ScheduledJobOption Cmdlet erstellt eine Planauftragsoption, bei der die planmäßige WakeToRun-Auftragsoption auf "True" festgelegt ist. Die WakeToRun-Option führt den geplanten Auftrag aus, auch wenn sich der Computer zum geplanten Startzeit im Standby- oder Ruhezustand befindet. Der Befehl speichert die Auftragsoptionen in der $O Variablen.

$O = New-ScheduledJobOption -WakeToRun

So erhalten Sie Joboptionen

Verwenden Sie das Get-ScheduledJobOption Cmdlet, um die Auftragsoptionen eines geplanten Auftrags abzurufen. Verwenden Sie die Parameter Name, ID und InputObject , um den geplanten Auftrag und nicht die Auftragsoptionen anzugeben.

Get-ScheduledJobOptionruft die Auftragsoptionen des ProcessJob ab.

Get-ScheduledJobOption -Name ProcessJob
StartIfOnBatteries     : False
StopIfGoingOnBatteries : True
WakeToRun              : False
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

Ändern von Auftragsoptionen

Sie können die Auftragsoptionen eines geplanten Auftrags ändern, wenn Sie einen geplanten Auftrag erstellen oder einen vorhandenen Auftrag bearbeiten.

Die Splatted $JobParms wird an das Add-JobTrigger Cmdlet übergeben, um den Prozessauftrag zu erstellen. Er verwendet den Parameter ScheduledJobOption , um die Auftragsoptionen in der $O Variablen anzugeben.

$JobParms = @{
  Name = "ProcessJob"
  ScriptBlock = {Get-Process}
  ScheduledJobOption = $O
}

Add-JobTrigger @JobParms

Sie können die Auftragsoptionen auch jederzeit in einen vorhandenen geplanten Auftrag ändern. Der folgende Befehl verwendet das Set-ScheduledJobOption Cmdlet, um den Wert der WakeToRun-Option des processJob scheduledJob in True zu ändern.

Die Set Cmdlets im PSScheduledJob-Modul , z. B. das Set-ScheduledJobOption Cmdlet, verfügen nicht über Name - oder ID-Parameter . Sie können den InputObject-Parameter verwenden, um die Optionen für den geplanten Auftrag anzugeben oder einen geplanten Auftrag von Get-ScheduledJobOption Cmdlet zu Set-ScheduledJobOptionweiterleiten.

In diesem Beispiel wird das Get-ScheduledJob Cmdlet verwendet, um den ProcessJob abzurufen. Es verwendet das Get-ScheduledJobOption Cmdlet, um die Auftragsoptionen im ProcessJob abzurufen, und das Set-ScheduledJobOption Cmdlet, um die WakeToRun-Auftragsoption im ProcessJob in True zu ändern.

Get-ScheduledJob -Name ProcessJob | Get-ScheduledJobOption |
 Set-ScheduledJobOption -WakeToRun

So wird's gemacht: Abrufen von geplanten Auftragsinstanzen

Wenn ein geplanter Auftrag gestartet wird, erstellt PowerShell eine Auftragsinstanz, die einem Standardmäßigen PowerShell-Hintergrundauftrag ähnelt. Sie können die Auftrags-Cmdlets wie Get-Jobz. B. zum Stop-JobReceive-Job Verwalten der Auftragsinstanzen verwenden.

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. .

Verwenden Sie das Get-Job Cmdlet, um alle Instanzen von geplanten PowerShell-Aufträgen und alle aktiven Standardaufträge abzurufen. Das Import-Module Cmdlet importiert das PSScheduledJob-Modul und Get-Job ruft die Aufträge auf dem lokalen Computer ab.

Import-Module PSScheduledJob
Get-Job

Get-Job ruft Instanzen von ProcessJob auf dem lokalen Computer ab.

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

Die Standardanzeige zeigt nicht die Startzeit an, die in der Regel Instanzen desselben geplanten Auftrags unterscheidet.

Das Get-Job Cmdlet sendet Objekte nach unten in der Pipeline. Das Format-Table Cmdlet zeigt die Eigenschaften Name, ID und BeginTime des geplanten Auftrags an.

Get-Job ProcessJob | Format-Table -Property Name, ID, BeginTime
Name       Id BeginTime
----       -- ---------
ProcessJob 43 11/2/2011 3:00:02 AM
ProcessJob 44 11/3/2011 3:00:02 AM
ProcessJob 45 11/4/2011 3:00:02 AM
ProcessJob 46 11/5/2011 3:00:02 AM
ProcessJob 47 11/6/2011 3:00:02 AM
ProcessJob 48 11/7/2011 12:00:01 AM
ProcessJob 49 11/7/2011 3:00:02 AM
ProcessJob 50 11/8/2011 3:00:02 AM

Abrufen von geplanten Auftragsergebnissen

Verwenden Sie das Receive-Job Cmdlet, um die Ergebnisse einer Instanz eines geplanten Auftrags abzurufen.

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. .

In diesen Beispielen werden die Ergebnisse der neuesten Instanz des geplanten ProcessJob-Auftrags (ID = 51) abgerufen.

Import-Module PSScheduledJob
Receive-Job -ID 51 -Keep

Die Ergebnisse geplanter Aufträge werden auf dem Datenträger gespeichert, sodass der Parameter "Keep " Receive-Job nicht erforderlich ist. Ohne den Parameter "Keep" können Sie jedoch die Ergebnisse eines geplanten Auftrags nur einmal in jeder PowerShell-Sitzung abrufen. Geben Sie ein neues PowerShell-Fenster ein, oder öffnen Sie ein neues PowerShell-Fenster, PowerShell um eine neue PowerShell-Sitzung zu starten.

Weitere Informationen