Freigeben über


Suspend-Job

Beendet Workflowaufträge temporär.

Syntax

Suspend-Job
       [-Force]
       [-Wait]
       [-Id] <Int32[]>
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Suspend-Job
       [-Job] <Job[]>
       [-Force]
       [-Wait]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Suspend-Job
       [-Force]
       [-Wait]
       [-Name] <String[]>
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Suspend-Job
       [-Force]
       [-Wait]
       [-InstanceId] <Guid[]>
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Suspend-Job
       [-Force]
       [-Wait]
       [-Filter] <Hashtable>
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Suspend-Job
       [-Force]
       [-Wait]
       [-State] <JobState>
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]

Beschreibung

Das Suspend-Job Cmdlet hält Workflowaufträge an. "Anhalten" bedeutet, einen Workflowauftrag vorübergehend zu unterbrechen oder anzuhalten. Mit diesem Cmdlet können Benutzer, die Workflows ausführen, den Workflow anhalten. Sie ergänzt die Suspend-Workflow-Aktivitäthttps://go.microsoft.com/fwlink/?LinkId=267141 , bei der es sich um einen Befehl im Workflow handelt, der den Workflow angehalten.

Das Suspend-Job Cmdlet funktioniert nur für Workflowaufträge. Es funktioniert nicht für Standardhintergrundaufträge, z. B. für die, die mit dem Start-Job Cmdlet gestartet werden.

Um einen Workflowauftrag zu identifizieren, suchen Sie in der PSJobTypeName-Eigenschaft des Auftrags nach einem Wert von PSWorkflowJob. Informationen dazu, ob ein bestimmter benutzerdefinierter Auftragstyp das Suspend-Job Cmdlet unterstützt, finden Sie in den Hilfethemen für den benutzerdefinierten Auftragstyp.

Wenn Sie einen Workflowauftrag anhalten, wird er bis zum nächsten Prüfpunkt ausgeführt, angehalten und gibt sofort ein Workflowauftragsobjekt zurück. Wenn Sie warten möchten, bis das Anhalten abgeschlossen ist, bevor Sie den Auftrag abrufen, verwenden Sie den Wait-Parameter oder Suspend-Job das Wait-Job Cmdlet. Wenn der Workflowauftrag angehalten wird, wird der Wert der Statuseigenschaft des Auftrags angehalten.

Das korrekte Anhalten ist von Prüfpunkten abhängig. Der aktuelle Auftragsstatus, Metadaten und die Ausgabe werden im Prüfpunkt gespeichert, sodass der Workflowauftrag ohne Verlust des Zustands oder der Daten fortgesetzt werden kann. Wenn der Workflowauftrag keine Prüfpunkte enthält, kann er nicht ordnungsgemäß angehalten werden. Zum Hinzufügen von Prüfpunkten zu einem workflow, den Sie ausführen, verwenden Sie den allgemeinen PSPersist-Workflowparameter . Sie können den Parameter Force verwenden, um jeden Workflowauftrag sofort anzusetzen und einen Workflowauftrag anzusetzen, der keine Prüfpunkte enthält, die Aktion jedoch zu Einem Verlust des Zustands und der Daten führen kann.

Bevor Sie ein Auftrags-Cmdlet für einen benutzerdefinierten Auftragstyp verwenden, z. B. einen Workflowauftrag (PSWorkflowJob), importieren Sie das Modul, das den benutzerdefinierten Auftragstyp unterstützt, entweder mithilfe des Import-Module Cmdlets oder mithilfe oder mithilfe eines Cmdlets im Modul.

Dieses Cmdlet wurde in Windows PowerShell 3.0 eingeführt.

Beispiele

Beispiel 1: Anhalten eines Workflowauftrags anhand des Namens

In diesem Beispiel wird veranschaulicht, wie ein Workflowauftrag angehalten wird.

Der erste Befehl erstellt den Get-SystemLog Workflow. Der Workflow verwendet die CheckPoint-Workflow Aktivität, um einen Prüfpunkt im Workflow zu definieren.

Der zweite Befehl verwendet den AsJob-Parameter, der für alle Workflows verwendet wird, um den Get-SystemLog Workflow als Hintergrundauftrag auszuführen. Der Befehl verwendet den allgemeinen Parameter "JobName ", um einen Anzeigenamen für den Workflowauftrag anzugeben.

Der dritte Befehl verwendet das Get-Job Cmdlet, um den LogflowJob Workflowauftrag abzurufen. Die Ausgabe zeigt, dass der Wert der PSJobTypeName-Eigenschaft PSWorkflowJob ist.

Der vierte Befehl verwendet das Suspend-Job Cmdlet, um den LogflowJob Auftrag anzusetzen. Der Auftrag wird an den Prüfpunkt ausgeführt und dann angehalten.

#Sample Workflow
Workflow Get-SystemLog
{
    $Events = Get-WinEvent -LogName System
    CheckPoint-Workflow
    InlineScript {\\Server01\Scripts\Analyze-SystemEvents.ps1 -Events $Events}
}
Get-SystemLog -AsJob -JobName "LogflowJob"
Get-Job -Name LogflowJob

Id   Name          PSJobTypeName   State       HasMoreData     Location   Command
--   ----          -------------   -----       -----------     --------   -------
4    LogflowJob    PSWorkflowJob   Running     True            localhost   Get-SystemLog

Suspend-Job -Name LogflowJob

Id   Name          PSJobTypeName   State       HasMoreData     Location   Command
--   ----          -------------   -----       -----------     --------   -------
4    LogflowJob    PSWorkflowJob   Suspended   True            localhost   Get-SystemLog

Beispiel 2: Anhalten und Fortsetzen eines Workflowauftrags

In diesem Beispiel wird veranschaulicht, wie ein Workflowauftrag angehalten und fortgesetzt wird.

Der erste Befehl hält den LogWorkflowJob-Auftrag an. Der Befehl wird sofort zurückgegeben. Die Ausgabe zeigt, dass der Workflowauftrag weiterhin ausgeführt wird, obwohl er angehalten wird.

Der zweite Befehl verwendet das Get-Job Cmdlet, um den LogWorkflowJob-Auftrag abzurufen. Die Ausgabe zeigt, dass der Workflowauftrag erfolgreich angehalten wurde.

Der dritte Befehl verwendet das Get-Job Cmdlet zum Abrufen des LogWorkflowJob-Auftrags und des Resume-Job Cmdlets, um ihn fortzusetzen. Die Ausgabe zeigt, dass der Workflowauftrag erfolgreich fortgesetzt wurde und jetzt ausgeführt wird.

Suspend-Job -Name LogWorkflowJob

Id   Name          PSJobTypeName      State         HasMoreData     Location      Command
--   ----          -------------      -----         -----------     --------      -------
67   LogflowJob    PSWorkflowJob      Running       True            localhost     LogWorkflow

Get-Job -Name LogWorkflowJob

Id   Name          PSJobTypeName      State         HasMoreData     Location      Command
--   ----          -------------      -----         -----------     --------      -------
67   LogflowJob    PSWorkflowJob      Suspended     True            localhost     LogWorkflow

Get-Job -Name LogWorkflowJob | Resume-Job

Id     Name          PSJobTypeName      State       HasMoreData     Location      Command
--     ----          -------------      -----       -----------     --------      -------
67     LogflowJob    PSWorkflowJob      Running     True            localhost     LogWorkflow

Beispiel 3: Anhalten eines Workflowauftrags auf einem Remotecomputer

Invoke-Command -ComputerName Srv01 -Scriptblock {Suspend-Job -Filter @{CustomID="031589"}

Dieser Befehl verwendet das Invoke-Command Cmdlet, um einen Workflowauftrag auf dem Srv01-Remotecomputer anzusetzen. Der Wert des Filters-Parameters ist eine Hashtabelle, die einen CustomID-Wert angibt. Diese CustomID ist Auftragsmetadaten (PSPrivateMetadata).

Beispiel 4: Warten, bis der Workflowauftrag angehalten wurde

Suspend-Job VersionCheck -Wait

Id     Name          PSJobTypeName      State         HasMoreData     Location      Command
--     ----          -------------      -----         -----------     --------      -------
 5     VersionCheck  PSWorkflowJob      Suspended     True            localhost     LogWorkflow

Dieser Befehl hält den VersionCheck-Workflowauftrag an. Der Befehl verwendet den Parameter "Wait ", um zu warten, bis der Workflowauftrag angehalten wurde. Wenn der Workflowauftrag zum nächsten Prüfpunkt ausgeführt und angehalten wird, wird der Befehl beendet und gibt das Auftragsobjekt zurück.

Beispiel 5: Erzwingen des Anhaltens eines Workflowauftrags

Suspend-Job Maintenance -Force

Dieser Befehl erzwingt das Anhalten des Maintenance-Workflowauftrags Der Wartungsauftrag enthält keine Prüfpunkte. Sie kann nicht ordnungsgemäß angehalten werden und wird möglicherweise nicht ordnungsgemäß fortgesetzt.

Parameter

-Confirm

Hiermit werden Sie vor der Ausführung des Cmdlets zur Bestätigung aufgefordert.

Typ:SwitchParameter
Aliase:cf
Position:Named
Standardwert:False
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-Filter

Gibt eine Hashtabelle mit Bedingungen an. Dieses Cmdlet hält Aufträge an, die alle Bedingungen erfüllen. Geben Sie eine Hashtabelle ein, in der die Schlüssel Auftragseigenschaften und die Werte Werte der Auftragseigenschaften sind.

Typ:Hashtable
Position:0
Standardwert:None
Erforderlich:True
Pipelineeingabe akzeptieren:True
Platzhalterzeichen akzeptieren:False

-Force

Hält den Workflowauftrag sofort an. Diese Aktion kann zu einem Verlust des Zustands und der Daten führen.

Suspend-Job Standardmäßig kann der Workflowauftrag bis zum nächsten Prüfpunkt ausgeführt und dann angehalten werden. Mit diesem Parameter können Sie auch Workflowaufträge ohne Prüfpunkte anhalten.

Typ:SwitchParameter
Aliase:F
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-Id

Gibt die IDs von Aufträgen an, die dieses Cmdlet angehalten.

Die ID ist eine ganze Zahl, die den Auftrag in der aktuellen Sitzung eindeutig identifiziert. Es ist einfacher zu merken und als die Instanz-ID einzugeben, aber sie ist nur in der aktuellen Sitzung eindeutig. Sie können eine oder mehrere IDs eingeben, getrennt durch Kommas. Verwenden Sie das Get-Job Cmdlet, um die ID eines Auftrags zu finden.

Typ:Int32[]
Position:0
Standardwert:None
Erforderlich:True
Pipelineeingabe akzeptieren:True
Platzhalterzeichen akzeptieren:False

-InstanceId

Gibt die Instanz-IDs von Aufträgen an, die dieses Cmdlet angehalten. Standardmäßig werden alle Aufträge fortgesetzt.

Eine Instanz-ID ist eine GUID, die den Auftrag auf dem Computer eindeutig identifiziert. Verwenden Sie die Instanz-ID eines Auftrags, um Get-Jobdie Instanz-ID eines Auftrags zu finden.

Typ:Guid[]
Position:0
Standardwert:None
Erforderlich:True
Pipelineeingabe akzeptieren:True
Platzhalterzeichen akzeptieren:False

-Job

Gibt die Workflowaufträge an, die dieses Cmdlet beendet. Geben Sie eine Variable ein, die die Workflowaufträge enthält, oder einen Befehl, der die Workflowaufträge abruft. Sie können Workflowaufträge auch an das Suspend-Job Cmdlet weiterleiten.

Typ:Job[]
Position:0
Standardwert:None
Erforderlich:True
Pipelineeingabe akzeptieren:True
Platzhalterzeichen akzeptieren:False

-Name

Gibt Anzeigenamen von Aufträgen an, die dieses Cmdlet angehalten. Geben Sie einen oder mehrere Workflowauftragsnamen ein. Platzhalterzeichen werden unterstützt.

Typ:String[]
Position:0
Standardwert:None
Erforderlich:True
Pipelineeingabe akzeptieren:True
Platzhalterzeichen akzeptieren:False

-State

Gibt einen Auftragsstatus an. Dieses Cmdlet stoppt nur Aufträge im angegebenen Zustand. Zulässige Werte für diesen Parameter:

  • NotStarted
  • Wird ausgeführt
  • Abgeschlossen
  • Fehler
  • Beendet
  • Blockiert
  • Ausgesetzt
  • Getrennt
  • Wird angehalten
  • Wird beendet

Suspend-Job Hält nur Workflowaufträge im Zustand "Ausführen " an.

Weitere Informationen zu Auftragszuständen finden Sie unter JobState Enumeration.

Typ:JobState
Zulässige Werte:NotStarted, Running, Completed, Failed, Stopped, Blocked, Suspended, Disconnected, Suspending, Stopping, AtBreakpoint
Position:0
Standardwert:None
Erforderlich:True
Pipelineeingabe akzeptieren:True
Platzhalterzeichen akzeptieren:False

-Wait

Gibt an, dass dieses Cmdlet die Eingabeaufforderung unterdrückt, bis sich der Workflowauftrag im angehaltenen Zustand befindet. Gibt standardmäßig Suspend-Job sofort zurück, auch wenn sich der Workflowauftrag noch nicht im angehaltenen Zustand befindet.

Der Wait-Parameter entspricht dem Weiterleiten eines Suspend-Job Befehls an das Wait-Job Cmdlet.

Typ:SwitchParameter
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-WhatIf

Zeigt, was geschieht, wenn das Cmdlet ausgeführt wird. Das Cmdlet wird nicht ausgeführt.

Typ:SwitchParameter
Aliase:wi
Position:Named
Standardwert:False
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

Eingaben

Job

Sie können alle Arten von Aufträgen an dieses Cmdlet weiterleiten. Wenn Suspend-Job jedoch ein Auftrag eines nicht unterstützten Typs zurückgegeben wird, wird ein Beendigungsfehler zurückgegeben.

Ausgaben

Job

Dieses Cmdlet gibt die Aufträge zurück, die angehalten wurden.

Hinweise

Windows PowerShell enthält die folgenden Aliase für Suspend-Job:

  • sujb

Der Mechanismus und der Speicherort für einen angehaltenen Auftrag können je nach Auftragstyp unterschiedlich sein. Beispielsweise werden angehaltene Workflowaufträge standardmäßig in einem Flatfilespeicher gespeichert, sie können jedoch auch in einer Datenbank gespeichert werden.

Wenn Sie einen Workflowauftrag übermitteln, der sich nicht im Zustand "Ausführen" befindet, Suspend-Job wird eine Warnmeldung angezeigt. Verwenden Sie den allgemeinen WarningAction-Parameter mit dem Wert "SilentlyContinue", um die Warnung zu unterdrücken.

Wenn ein Auftrag nicht vom Typ ist, der das Anhalten unterstützt, Suspend-Job wird ein Beendigungsfehler zurückgegeben.

Um die angehaltenen Workflowaufträge zu finden, einschließlich derer, die von diesem Cmdlet angehalten wurden, verwenden Sie den Parameter "State" des Get-Job Cmdlets, um Workflowaufträge im Angehaltenen Zustand abzurufen.

Einige Auftragstypen verfügen über Optionen oder Eigenschaften, die das Anhalten des Auftrags durch Windows PowerShell verhindern. Wenn versucht wird, den Auftrag anzusetzen, stellen Sie sicher, dass die Auftragsoptionen und -eigenschaften das Anhalten zulassen.