Freigeben über


Set-ScheduledJob

Ändert geplante Aufträge.

Syntax

Set-ScheduledJob
   [-Name <String>]
   [-ScriptBlock <ScriptBlock>]
   [-Trigger <ScheduledJobTrigger[]>]
   [-InitializationScript <ScriptBlock>]
   [-RunAs32]
   [-Credential <PSCredential>]
   [-Authentication <AuthenticationMechanism>]
   [-ScheduledJobOption <ScheduledJobOptions>]
   [-InputObject] <ScheduledJobDefinition>
   [-MaxResultCount <Int32>]
   [-PassThru]
   [-ArgumentList <Object[]>]
   [-RunNow]
   [-RunEvery <TimeSpan>]
   [<CommonParameters>]
Set-ScheduledJob
   [-Name <String>]
   [-FilePath <String>]
   [-Trigger <ScheduledJobTrigger[]>]
   [-InitializationScript <ScriptBlock>]
   [-RunAs32]
   [-Credential <PSCredential>]
   [-Authentication <AuthenticationMechanism>]
   [-ScheduledJobOption <ScheduledJobOptions>]
   [-InputObject] <ScheduledJobDefinition>
   [-MaxResultCount <Int32>]
   [-PassThru]
   [-ArgumentList <Object[]>]
   [-RunNow]
   [-RunEvery <TimeSpan>]
   [<CommonParameters>]
Set-ScheduledJob
   [-InputObject] <ScheduledJobDefinition>
   [-ClearExecutionHistory]
   [-PassThru]
   [<CommonParameters>]

Beschreibung

Das Set-ScheduledJob Cmdlet ändert die Eigenschaften von geplanten Aufträgen, z. B. die Befehle, die von den Aufträgen ausgeführt werden, oder die Zum Ausführen des Auftrags erforderlichen Anmeldeinformationen. Sie können es auch verwenden, um den Ausführungsverlauf des geplanten Auftrags zu löschen.

Um dieses Cmdlet zu verwenden, verwenden Sie zunächst das Get-ScheduledJob Cmdlet, um den geplanten Auftrag abzurufen. Übergeben Sie dann den geplanten Auftrag an Set-ScheduledJob den Auftrag, oder speichern Sie den Auftrag in einer Variablen, und verwenden Sie den InputObject-Parameter , um den Auftrag zu identifizieren. Verwenden Sie die Parameter zum Erneuten Standard von Set-ScheduledJob Aufgaben, um die Auftragseigenschaften zu ändern oder den Ausführungsverlauf zu löschen.

Obwohl Sie die Set-ScheduledJob Auslöser und Optionen eines geplanten Auftrags ändern können, bieten die Add-JobTriggerCmdlets Set-JobTriggerund Set-ScheduledJobOption Die Cmdlets wesentlich einfachere Möglichkeiten zum Ausführen dieser Aufgaben. Verwenden Sie das Register-ScheduledJob Cmdlet, um einen neuen geplanten Auftrag zu erstellen.

Der Trigger-Parameter von Set-ScheduledJob fügt einen oder mehrere Auftragstrigger hinzu, die den Auftrag starten. Der Trigger-Parameter ist optional, sodass Sie Trigger hinzufügen können, wenn Sie den geplanten Auftrag erstellen, später Auftragstrigger hinzufügen, den RunNow-Parameter hinzufügen, um den Auftrag sofort zu starten, das Start-Job Cmdlet verwenden, um den Auftrag sofort zu starten oder den ungetriggerten geplanten Auftrag als Vorlage für andere Aufträge zu speichern.

Set-ScheduledJob ist eine Sammlung von Auftragsplanungs-Cmdlets im PSScheduledJob-Modul, das in Windows PowerShell enthalten ist.

Weitere Informationen zu geplanten Aufträgen finden Sie unter den Info-Themen im PSScheduledJob-Modul. Importieren Sie das PSScheduledJob-Modul, und geben Sie dann Folgendes ein: Get-Help about_Scheduled* oder lesen Sie about_Scheduled_Jobs.

Dieses Cmdlet wurde in Windows PowerShell 3.0 eingeführt.

Beispiele

Beispiel 1: Ändern des Skripts, das ein Auftrag ausführt

Dieses Beispiel zeigt, wie Sie das Skript ändern, das in einem geplanten Auftrag ausgeführt wird.

Get-ScheduledJob -Name "Inventory"

Id         Name            Triggers        Command                                  Enabled
--         ----            --------        -------                                  -------
1          Inventory       {1}             C:\Scripts\Get-Inventory.ps1             True

Get-ScheduledJob -Name "Inventory" | Set-ScheduledJob -FilePath "C:\Scripts\Get-FullInventory.ps1" -Passthru

Id         Name            Triggers        Command                                  Enabled
--         ----            --------        -------                                  -------
1          Inventory       {1}             C:\Scripts\Get-FullInventory.ps1         True

Der erste Befehl verwendet das Get-ScheduledJob Cmdlet zum Abrufen des geplanten Inventarauftrags. Die Ausgabe zeigt, dass der Auftrag das Skript „Get-Inventory.ps1“ ausführt.

Der zweite Befehl verwendet das Get-ScheduledJob Cmdlet zum Abrufen des geplanten Inventarauftrags. Ein Pipelineoperator (|) sendet den geplanten Auftrag an das Set-ScheduledJob Cmdlet. Das Set-ScheduledJob Cmdlet verwendet den Script-Parameter, um ein neues Skript anzugeben. Get-FullInventory.ps1 Der Befehl verwendet den Passthru-Parameter , um den geplanten Auftrag nach der Änderung zurückzugeben.

Dieser Befehl ist nicht erforderlich. Er soll lediglich die Auswirkung der Skriptänderung veranschaulichen.

Beispiel 2: Löschen des Ausführungsverlaufs eines geplanten Auftrags

In diesem Beispiel werden der aktuelle Ausführungsverlauf und gespeicherte Auftragsergebnisse für einen geplanten Auftrag gelöscht.

Get-ScheduledJob BackupArchive | Set-ScheduledJob -ClearExecutionHistory

Der Befehl verwendet das Get-ScheduledJob Cmdlet, um den geplanten Auftrag "BackupArchive" abzurufen. Ein Pipelineoperator (|) sendet den Auftrag an das Set-ScheduledJob Cmdlet, um ihn zu ändern. Das Set-ScheduledJob Cmdlet verwendet den Parameter ClearExecutionHistory , um den Ausführungsverlauf und gespeicherte Ergebnisse zu löschen.

Weitere Informationen zum Ausführungsverlauf und gespeicherten Auftragsergebnissen geplanter Aufträge finden Sie unter about_Scheduled_Jobs.

Beispiel 3: Ändern geplanter Aufträge auf einem Remotecomputer

Dieser Befehl ändert das Initialisierungsskript in allen geplanten Aufträgen auf Remotecomputern.

Invoke-Command -Computer "Server01, Server02" -ScriptBlock {Get-ScheduledJob |
    Set-ScheduledJob -InitializationScript \\SrvA\Scripts\SetForRun.ps1}

Der Befehl verwendet das Invoke-Command Cmdlet, um einen Befehl auf den Computern Server01 und Server02 auszuführen.

Der Remotebefehl beginnt mit einem Get-ScheduledJob Befehl, der alle geplanten Aufträge auf dem Computer abruft. Die geplanten Aufträge werden an das Set-ScheduledJob Cmdlet weitergeleitet, wodurch das Initialisierungsskript in SetForRun.ps1.

Parameter

-ArgumentList

Gibt Werte für die Parameter des Skripts an, das vom FilePath-Parameter oder für den Befehl angegeben wird, der durch den ScriptBlock-Parameter angegeben wird.

Type:Object[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Authentication

Gibt den Mechanismus an, der zum Authentifizieren der Anmeldeinformationen des Benutzers verwendet wird. Zulässige Werte für diesen Parameter:

  • Default
  • Basic
  • Credssp
  • Digest
  • Kerberos
  • Negotiate
  • NegotiateWithImplicitCredential

Der Standardwert ist Default. Weitere Informationen zu den Werten dieses Parameters finden Sie unter AuthenticationMechanism Enumeration im PowerShell SDK.

Achtung

Credential Security Support Provider (CredSSP)-Authentifizierung, bei der die Anmeldeinformationen des Benutzers an einen Remotecomputer übergeben werden, der authentifiziert werden soll, ist für Befehle konzipiert, die eine Authentifizierung für mehrere Ressourcen erfordern, z. B. den Zugriff auf eine Remotenetzwerkfreigabe. Dieser Mechanismus erhöht das Sicherheitsrisiko des Remotevorgangs. Wenn die Sicherheit des Remotecomputers gefährdet ist, können die an ihn übergebenen Anmeldeinformationen zum Steuern der Netzwerksitzung verwendet werden.

Type:AuthenticationMechanism
Accepted values:Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ClearExecutionHistory

Löscht den aktuellen Ausführungsverlauf und die gespeicherten Ergebnisse des geplanten Auftrags.

Der Auftragsausführungsverlauf und die Auftragsergebnisse werden mit dem geplanten Auftrag im $HOME\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs Verzeichnis auf dem Computer gespeichert, auf dem der Auftrag erstellt wird. Verwenden Sie das Get-Job Cmdlet, um den Ausführungsverlauf anzuzeigen. Verwenden Sie das Receive-Job Cmdlet, um die Auftragsergebnisse abzurufen.

Dieser Parameter hat keine Auswirkungen auf die Ereignisse, die vom Taskplaner in die Windows-Ereignisprotokolle geschrieben werden, und hindert Windows PowerShell nicht daran, Auftragsergebnisse zu speichern. Verwenden Sie den MaxResultCount-Parameter , um die Anzahl der gespeicherten Auftragsergebnisse zu verwalten.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Credential

Gibt ein Benutzerkonto mit der Berechtigung zum Ausführen des geplanten Auftrags an. Der Standardwert ist der aktuelle Benutzer.

Geben Sie einen Benutzernamen ein, z. B. "User01" oder "Do Standard 01\User01", oder geben Sie ein PSCredential-Objekt ein, z. B. eines aus dem Get-Credential Cmdlet. Wenn Sie nur einen Benutzernamen eingeben, werden Sie zur Eingabe eines Kennworts aufgefordert.

Type:PSCredential
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-FilePath

Gibt ein Skript an, das vom geplanten Auftrag ausgeführt wird. Geben Sie den Pfad zu einer PS1-Datei auf dem lokalen Computer ein. Verwenden Sie den ArgumentList-Parameter , um Standardwerte für die Skriptparameter anzugeben. Jeder geplante Auftrag muss entweder über einen ScriptBlock - oder FilePath-Wert verfügen.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InitializationScript

Gibt den vollqualifizierten Pfad zu einem Windows PowerShell-Skript (.ps1) an. Das Initialisierungsskript wird in der Sitzung ausgeführt, die für den Hintergrundauftrag erstellt wird, bevor die Befehle, die durch den ScriptBlock-Parameter oder das Skript angegeben werden, das vom FilePath-Parameter angegeben wird. Sie können das Initialisierungsskript zum Konfigurieren der Sitzung verwenden, z. B. zum Hinzufügen von Dateien, Funktionen oder Aliasen, Erstellen von Verzeichnissen oder Überprüfen der Voraussetzungen.

Verwenden Sie den FilePath-Parameter , um ein Skript anzugeben, das die primären Auftragsbefehle ausführt.

Wenn das Initialisierungsskript einen Fehler generiert, einschließlich eines nicht beendeten Fehlers, wird die aktuelle Instanz des geplanten Auftrags nicht ausgeführt, und der Status ist fehlgeschlagen.

Type:ScriptBlock
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

Gibt den zu ändernden geplanten Auftrag an. Geben Sie eine Variable ein, die ScheduledJobDefinition-Objekte enthält, oder geben Sie einen Befehl oder Ausdruck ein, der ScheduledJobDefinition-Objekte abruft, z. B. einen Get-ScheduledJob Befehl. Sie können auch ein ScheduledJobDefinition -Objekt an Set-ScheduledJob.

Wenn Sie mehrere geplante Aufträge angeben, Set-ScheduledJob werden dieselben Änderungen an allen Aufträgen vorgenommen.

Type:ScheduledJobDefinition
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-MaxResultCount

Gibt an, wie viele Auftragsergebniseinträge für den geplanten Auftrag verwaltet werden. Der Standardwert ist 32.

Windows PowerShell speichert den Ausführungsverlauf und die Ergebnisse der einzelnen ausgelösten Instanzen des geplanten Auftrags auf dem Datenträger. Der Wert dieses Parameters bestimmt die Anzahl der Ergebnisse der Auftragsinstanz, die für diesen geplanten Auftrag gespeichert wird. Wenn die Anzahl der Ergebnisse der Auftragsinstanz diesen Wert überschreitet, löscht Windows PowerShell die Ergebnisse der ältesten Auftragsinstanz, um Platz für die Ergebnisse der neuesten Auftragsinstanz zu schaffen.

Der Auftragsausführungsverlauf und die Auftragsergebnisse werden im $HOME\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs\<JobName>\Output\<Timestamp> Verzeichnisse auf dem Computer, auf dem der Auftrag erstellt wird. Verwenden Sie das Get-Job Cmdlet, um den Ausführungsverlauf anzuzeigen. Verwenden Sie das Receive-Job Cmdlet, um die Auftragsergebnisse abzurufen.

Der Parameter MaxResultCount legt den Wert der ExecutionHistoryLength-Eigenschaft des geplanten Auftrags fest.

Verwenden Sie den ClearExecutionHistory-Parameter , um den aktuellen Ausführungsverlauf und die Auftragsergebnisse zu löschen.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Name

Gibt einen neuen Namen für den geplanten Auftrag und Instanzen des geplanten Auftrags an. Der Name muss auf dem lokalen Computer eindeutig sein.

Um den zu ändernden geplanten Auftrag zu identifizieren, verwenden Sie den InputObject-Parameter oder geben Sie einen geplanten Auftrag von Get-ScheduledJob an .Set-ScheduledJob

Dieser Parameter ändert nicht die Namen von Auftragsinstanzen auf dem Datenträger. Er wirkt sich nur auf Auftragsinstanzen aus, die nach Abschluss dieses Befehls gestartet werden.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PassThru

Gibt ein Objekt zurück, das das Element darstellt, mit dem Sie arbeiten. Standardmäßig wird von diesem Cmdlet keine Ausgabe generiert.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-RunAs32

Führt den geplanten Auftrag in einem 32-Bit-Prozess aus.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-RunEvery

Wird verwendet, um anzugeben, wie oft der Auftrag ausgeführt werden soll. Verwenden Sie beispielsweise diese Option, um einen Auftrag alle 15 Minuten auszuführen.

Type:TimeSpan
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-RunNow

Startet sofort einen Auftrag, sobald das Set-ScheduledJob Cmdlet ausgeführt wird. Durch diesen Parameter ist es nicht erforderlich, dass der Taskplaner direkt nach der Registrierung ein Windows PowerShell-Skript ausführt. Außerdem müssen Benutzer keinen Trigger erstellen, der ein Datum und eine Uhrzeit für den Start angibt.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ScheduledJobOption

Legt Optionen für den geplanten Auftrag fest. Geben Sie ein ScheduledJobOptions-Objekt ein, z. B. ein Objekt, das Sie mithilfe des New-ScheduledJobOption Cmdlets erstellen, oder einen Hashtabellenwert.

Sie können Optionen für einen geplanten Auftrag festlegen, wenn Sie den geplanten Auftrag registrieren oder die Set-ScheduledJobOption Optionen Set-ScheduledJob oder Cmdlets verwenden, um Optionen festzulegen oder zu ändern.

Viele Optionen und ihre Standardwerte bestimmen, ob und wann ein geplanter Auftrag ausgeführt wird. Achten Sie darauf, diese Optionen zu überprüfen, bevor Sie einen Auftrag planen. Eine Beschreibung der geplanten Auftragsoptionen, einschließlich der Standardwerte, finden Sie unter New-ScheduledJobOption.

Um eine Hashtabelle zu übermitteln, verwenden Sie die folgenden Schlüssel. Die Schlüssel werden in der folgenden Hashtabelle mit ihren Standardwerten angezeigt.

@{# Power SettingsStartIfOnBattery=$False;StopIfGoingOnBattery=$True; WakeToRun=$False; # Idle SettingsStartIfNotIdle=$False; IdleDuration="00:10:00"; IdleTimeout="01:00:00"; StopIfGoingOffIdle=$True; RestartOnIdleResume=$False;# Security settingsShowInTaskScheduler=$TrueRunElevated=$False;# MiscRunWithoutNetwork=$False;DoNotAllowDemandStart=$False;MultipleInstancePolicy=IgnoreNew# Can be IgnoreNew, Parallel, Queue, StopExisting}

Type:ScheduledJobOptions
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ScriptBlock

Gibt die Befehle an, die vom geplanten Auftrag ausgeführt werden. Schließen Sie die Befehle in geschweifte Klammern ({}) ein, um einen Skriptblock zu erstellen. Verwenden Sie den ArgumentList-Parameter , um Standardwerte für Befehlsparameter anzugeben.

Jeder Register-ScheduledJob Befehl muss entweder die Parameter ScriptBlock oder FilePath verwenden.

Type:ScriptBlock
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Trigger

Gibt die Trigger für den geplanten Auftrag an. Geben Sie mindestens ein ScheduledJobTrigger-Objekt ein, z. B. die vom Cmdlet zurückgegebenen Objekte New-JobTrigger oder eine Hashtabelle mit Auftragstriggerschlüsseln und -werten.

Ein Auftragstrigger startet einen geplanten Auftrag automatisch für einen einmaligen oder wiederkehrenden Auftrag oder wenn ein Ereignis auftritt.

Auftragstrigger sind optional. Sie können einen Trigger hinzufügen, wenn Sie den geplanten Auftrag erstellen, Add-JobTriggerSet-ScheduledJob später Trigger hinzufügen oder das Start-Job Cmdlet verwenden, um den geplanten Auftrag sofort zu starten. Sie können auch einen geplanten Auftrag erstellen und verwalten, der keine Auftragstrigger enthält.

Um eine Hashtabelle zu übermitteln, verwenden Sie die folgenden Schlüssel.

@{Frequency="Once" (or Daily, Weekly, AtStartup, AtLogon);At="3am" (oder eine beliebige gültige Zeitzeichenfolge); DaysOfWeek="Monday", "Wednesday" (oder eine beliebige Kombination aus Tagnamen); Interval=2 (oder ein gültiges Häufigkeitsintervall); RandomDelay="30minutes" (oder eine beliebige gültige Zeitbereichszeichenfolge); User="Domain1\User01" (oder beliebiger gültiger Benutzer; wird nur mit dem AtLogon-Häufigkeitswert verwendet)

}

Type:ScheduledJobTrigger[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Eingaben

ScheduledJobDefinition

Sie können einen geplanten Auftrag an dieses Cmdlet weiterleiten.

Ausgaben

None

Standardmäßig gibt dieses Cmdlet keine Ausgabe zurück.

ScheduledJobDefinition

Wenn Sie den PassThru-Parameter verwenden, gibt dieses Cmdlet den geplanten Auftrag zurück, den er geändert hat.