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]
[-Filter] <Hashtable>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Suspend-Job
[-Force]
[-Wait]
[-State] <JobState>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Suspend-Job
[-Force]
[-Wait]
[-InstanceId] <Guid[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Suspend-Job
[-Force]
[-Wait]
[-Name] <String[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Beschreibung
Das Cmdlet Suspend-Job 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. Dies funktioniert nicht für Standard-Hintergrundaufträge, z. B. solche, die mit dem Cmdlet Start-Job gestartet werden.
Um einen Workflowauftrag zu identifizieren, suchen Sie nach dem Wert PSWorkflowJob in der PSJobTypeName-Eigenschaft des Auftrags. Um zu bestimmen, ob ein bestimmter benutzerdefinierter Auftragstyp das Suspend-Job-Cmdlet unterstützt, informieren Sie sich 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. Um vor dem Abrufen des Auftrags auf den Abschluss der Angehaltenen zu warten, verwenden Sie den Wait-Parameter von Suspend-Job oder das Cmdlet Wait-Job. Wenn der Workflowauftrag angehalten wird, lautet der Wert der State-Eigenschaft des Auftrags Angehalten.
Das korrekte Anhalten ist von Prüfpunkten abhängig. Der aktuelle Auftragsstatus, die Metadaten und die Aktuelle 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 aufweist, kann er nicht ordnungsgemäß angehalten werden. Um Prüfpunkte zu einem Workflow hinzuzufügen, den Sie ausführen, verwenden Sie den allgemeinen PSPersist-Workflowparameter. Sie können den Force-Parameter verwenden, um jeden Workflowauftrag sofort anzusetzen und einen Workflowauftrag ohne Prüfpunkte anzusetzen, aber die Aktion kann zu Einem Verlust von Zustand und Daten führen.
Bevor Sie ein Job-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 Cmdlets Import-Module 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
The first command creates the Get-SystemLog workflow. The workflow uses the CheckPoint-Workflow activity to define a checkpoint in the workflow.
#Sample WorkflowWorkflow Get-SystemLog
{
$Events = Get-WinEvent -LogName System
CheckPoint-Workflow
InlineScript {\\Server01\Scripts\Analyze-SystemEvents.ps1 -Events $Events}
}
The second command uses the *AsJob* parameter that is common to all workflows to run the Get-SystemLog workflow as a background job. The command uses the *JobName* workflow common parameter to specify a friendly name for the workflow job.
PS C:\> Get-SystemLog -AsJob -JobName "Get-SystemLogJob"
The third command uses the **Get-Job** cmdlet to get the Get-SystemLogJob workflow job. The output shows that the value of the **PSJobTypeName** property is PSWorkflowJob.
PS C:\> Get-Job -Name Get-SystemLogJob
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
4 Get-SystemLogJob PSWorkflowJob Running True localhost Get-SystemLog
The fourth command uses the **Suspend-Job** cmdlet to suspend the Get-SystemLogJob job. The job runs to the checkpoint and then suspends.
PS C:\> Suspend-Job -Name Get-SystemLogJob
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
4 Get-SystemLogJob PSWorkflowJob Suspended True localhost Get-SystemLog
In diesem Beispiel wird veranschaulicht, wie ein Workflowauftrag angehalten wird.
Beispiel 2: Anhalten und Fortsetzen eines Workflowauftrags
The first command suspends the LogWorkflowJob job.The command returns immediately. The output shows that the workflow job is still running, even though it is being suspended.
PS C:\> Suspend-Job -Name LogWorkflowJob
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
67 LogflowJob PSWorkflowJob Running True localhost LogWorkflow
The second command uses the **Get-Job** cmdlet to get the LogWorkflowJob job. The output shows that the workflow job suspended successfully.
PS C:\> Get-Job -Name LogWorkflowJob
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
67 LogflowJob PSWorkflowJob Suspended True localhost LogWorkflow
The third command uses the **Get-Job** cmdlet to get the LogWorkflowJob job and the Resume-Job cmdlet to resume it. The output shows that the workflow job resumed successfully and is now running.
PS C:\> Get-Job -Name LogWorkflowJob | Resume-Job
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
67 LogflowJob PSWorkflowJob Running True localhost LogWorkflow
In diesem Beispiel wird veranschaulicht, wie ein Workflowauftrag angehalten und fortgesetzt wird.
Beispiel 3: Anhalten eines Workflowauftrags auf einem Remotecomputer
PS C:\> Invoke-Command -ComputerName Srv01 -Scriptblock {Suspend-Job -Filter @{CustomID="031589"}
Dieser Befehl verwendet das Cmdlet Invoke-Command, um einen Workflowauftrag auf dem Srv01-Remotecomputer anzusetzen. Der Wert des Filter-Parameters ist eine Hashtabelle, die einen CustomID-Wert angibt. Diese CustomID umfasst 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 Wait-Parameter, um zu warten, bis der Workflowauftrag angehalten wurde. Wenn der Workflowauftrag bis zum nächsten Prüfpunkt ausgeführt und angehalten wird, wird der Befehl abgeschlossen und gibt das Auftragsobjekt zurück.
Beispiel 5: Anhalten eines Workflowauftrags erzwingen
PS C:\> Suspend-Job Maintenance -Force
Dieser Befehl erzwingt das Anhalten des Maintenance-Workflowauftrags Der Wartungsauftrag verfügt über keine Prüfpunkte. Er 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 von Zustand und Daten führen.
Standardmäßig wird der Workflowauftrag mit Suspend-Job bis zum nächsten Prüfpunkt ausgeführt und dann angehalten. 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 einzugeben als die instance-ID, aber sie ist nur in der aktuellen Sitzung eindeutig. Sie können eine oder mehrere IDs durch Kommas getrennt eingeben. Verwenden Sie das Cmdlet Get-Job, um die ID eines Auftrags zu ermitteln.
Type: | Int32[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-InstanceId
Gibt die instance IDs von Aufträgen an, die von diesem Cmdlet angehalten werden. Standardmäßig werden alle Aufträge fortgesetzt.
Eine Instanz-ID ist eine GUID, die den Auftrag auf dem Computer eindeutig identifiziert. Zum Ermitteln der Instanz-ID eines Auftrags verwenden Sie Get-Job.
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 weiterreichen.
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 von diesem Cmdlet angehalten werden. 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 beendet 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 Status Wird ausgeführt an.
Weitere Informationen zu Auftragszuständen finden Sie unter JobState Enumeration in der MSDN Library.
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. Standardmäßig wird Suspend-Job sofort zurückgegeben, auch wenn sich der Workflowauftrag noch nicht im angehaltenen Zustand befindet.
Der Wait-Parameter entspricht der Weiterleitung 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
Sie können alle Arten von Aufträgen an dieses Cmdlet übergeben. Wenn suspend-Job jedoch einen Auftrag eines nicht unterstützten Typs abruft, wird ein Abbruchfehler zurückgegeben.
Ausgaben
Dieses Cmdlet gibt die Angehaltenen Aufträge zurück.
Hinweise
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 weiterleiten, der nicht den Status Running aufweist, zeigt Suspend-Job eine Warnmeldung an. 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, gibt Suspend-Job einen Abbruchfehler zurück.
Verwenden Sie den State-Parameter des Get-Job-Cmdlets , um die angehaltenen Workflowaufträge zu ermitteln, einschließlich der von diesem Cmdlet angehaltenen Workflowaufträge.
Einige Auftragstypen verfügen über Optionen oder Eigenschaften, die das Anhalten des Auftrags durch Windows PowerShell verhindern. Wenn der Versuch, den Auftrag angehalten werden soll, fehlschlägt, überprüfen Sie, ob die Auftragsoptionen und -eigenschaften das Anhalten zulassen.