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 Get-SystemLogJob Workflowauftrag abzurufen. Die Ausgabe zeigt, dass der Wert der PSJobTypeName-Eigenschaft PSWorkflowJob ist.

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

#Sample WorkflowWorkflow Get-SystemLog
{
    $Events = Get-WinEvent -LogName System
    CheckPoint-Workflow
    InlineScript {\\Server01\Scripts\Analyze-SystemEvents.ps1 -Events $Events}
}

PS C:\> Get-SystemLog -AsJob -JobName "Get-SystemLogJob"

PS C:\> Get-Job -Name Get-SystemLogJob
Id     Name              PSJobTypeName   State       HasMoreData     Location   Command
--     ----              -------------   -----       -----------     --------   -------
4      Get-SystemLogJob  PSWorkflowJob   Running     True            localhost   Get-SystemLog

PS C:\> Suspend-Job -Name Get-SystemLogJob
Id     Name              PSJobTypeName   State       HasMoreData     Location   Command
--     ----              -------------   -----       -----------     --------   -------
4      Get-SystemLogJob  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.

PS C:\> Suspend-Job -Name LogWorkflowJob
Id     Name          PSJobTypeName      State         HasMoreData     Location             Command
--     ----          -------------      -----         -----------     --------             -------
67     LogflowJob    PSWorkflowJob      Running       True            localhost            LogWorkflow

PS C:\> Get-Job -Name LogWorkflowJob
Id     Name          PSJobTypeName      State         HasMoreData     Location             Command
--     ----          -------------      -----         -----------     --------             -------
67     LogflowJob    PSWorkflowJob      Suspended     True            localhost            LogWorkflow

PS C:\> 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

PS C:\> 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

PS C:\> 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

PS C:\> 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.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

Type:Hashtable
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters: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.

Type:SwitchParameter
Aliases:F
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

Type:Int32[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters: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.

Type:Guid[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters: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.

Type:Job[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Name

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

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters: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.

Type:JobState
Accepted values:NotStarted, Running, Completed, Failed, Stopped, Blocked, Suspended, Disconnected, Suspending, Stopping, AtBreakpoint
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters: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.

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

-WhatIf

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

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters: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.