Freigeben über


about_Job_Details

THEMA
  about_Job_Details

KURZBESCHREIBUNG
  Enthält Details zu Hintergrundaufträgen auf lokalen und Remotecomputern.
    
AUSFÜHRLICHE BESCHREIBUNG
   In diesem Thema wird der Begriff des Hintergrundauftrags 
   erläutert, und es werden technische Informationen zur 
   Funktionsweise von Hintergrundaufträgen in Windows PowerShell gegeben.

   Dieses Thema ergänzt die Themen "about_Jobs" und "about_Remote_Jobs".

   Wichtig: Für Hintergrundaufträge, die mit Start-Job oder dem 
        AsJob-Parameter von Invoke-Command gestartet werden, ist die 
        Windows PowerShell-Remotinginfrastruktur erforderlich. Diese 
        Features können Sie nur verwenden, wenn Windows PowerShell für Remoting 
        konfiguriert wurde. Dies gilt auch dann, wenn der Hintergrundauftrag 
        lediglich auf dem lokalen Computer ausgeführt wird. Weitere 
        Informationen finden Sie unter "about_Remote_Requirements".


 INFORMATIONEN ZU HINTERGRUNDAUFTRÄGEN
    Bei einem Hintergrundauftrag wird ein Befehl oder ein Ausdruck 
    asynchron ausgeführt. Dabei kann ein Cmdlet, eine Funktion, ein 
    Skript oder eine beliebige andere befehlsbasierte Aufgabe 
    ausgeführt werden. Hintergrundaufträge sind für Befehle 
    vorgesehen, für deren Ausführung ein längerer Zeitraum 
    erforderlich ist, doch können Sie jeden Befehl im Hintergrund 
    ausführen.

    Beim Ausführen eines synchronen Befehls wird die Windows PowerShell-
    Eingabeaufforderung unterdrückt, bis der Befehl vollständig ist. Bei einem 
    Hintergrundauftrag wird die Windows PowerShell-Eingabeaufforderung 
    jedoch nicht unterdrückt. Befehle zum Starten eines Hintergrundauftrags 
    geben ein Auftragsobjekt zurück. Die Eingabeaufforderung kann 
    sofort wieder verwendet werden, sodass Sie an anderen Aufgaben 
    arbeiten können, während der Hintergrundauftrag ausgeführt wird.
  
    Wenn Sie jedoch einen Hintergrundauftrag starten, erhalten Sie 
    die Ergebnisse nicht sofort, auch dann nicht, wenn der Auftrag 
    sehr schnell ausgeführt wird. Das zurückgegebene Auftragsobjekt 
    enthält nützliche Informationen zum Auftrag, jedoch nicht die 
    Auftragsergebnisse. Um die Auftragsergebnisse abzurufen, müssen Sie einen 
    separaten Befehl ausführen. Sie können auch Befehle ausführen, um den 
    Auftrag zu beenden, auf den Abschluss des Auftrags zu warten oder den 
    Auftrag zu löschen.

    Wenn Sie die zeitliche Steuerung eines Hintergrundauftrags 
    unabhängig von anderen Befehlen machen möchten, können Sie jeden 
    Hintergrundauftrag in einer eigenen Windows PowerShell-Umgebung 
    ("Sitzung") ausführen. Dabei kann es sich um eine temporäre 
    Verbindung handeln, die nur zum Ausführen des Auftrags erstellt und 
    anschließend zerstört wird, oder auch um eine permanente Sitzung 
    (PSSession), mit der Sie mehrere zusammengehörige Aufträge oder 
    Befehle ausführen können.


 VERWENDEN DER JOB-CMDLETS
    Verwenden Sie den Befehl "Start-Job", um einen Hintergrundauftrag 
    mit einem lokalen Computer zu starten. Start-Job gibt ein 
    Auftragsobjekt zurück. Mit dem Cmdlet "Get-Job" können Sie auch 
    Objekte abrufen, die die auf dem lokalen Computer gestarteten 
    Aufträge darstellen.

    Zum Abrufen der Auftragsergebnisse verwenden Sie den Befehl 
    "Receive-Job". Wenn der Auftrag nicht vollständig ist, gibt 
    Receive-Job Teilergebnisse zurück. Mit dem Cmdlet "Wait-Job" 
    können Sie die Eingabeaufforderung unterdrücken, bis einer oder 
    alle Aufträge, die in der Sitzung gestartet wurden, abgeschlossen 
    wurden.

    Zum Beenden eines Hintergrundauftrags verwenden Sie das Cmdlet 
    "Stop-Job". Zum Löschen eines Auftrags verwenden Sie das Cmdlet 
    "Remove-Job".

    Weitere Informationen zur Funktionsweise der Cmdlets finden Sie 
    in den Hilfethemen zu den einzelnen Cmdlets und unter "about_Jobs".

 
 STARTEN VON HINTERGRUNDAUFTRÄGEN AUF REMOTECOMPUTERN
    Sie können Hintergrundaufträge auf einem lokalen Computer oder einem 
    Remotecomputer erstellen und verwalten. Wenn Sie einen Hintergrundauft
    rag remote ausführen möchten, verwenden Sie den AsJob-Parameter eines 
    Cmdlets, z. B. Invoke-Command, oder verwenden Sie das Cmdlet 
    "Invoke-Command", um den Befehl "Start-Job" remote auszuführen. Sie 
    können einen Hintergrundauftrag auch in einer interaktiven Sitzung 
    starten.

    Weitere Informationen zu Remotehintergrundaufträgen finden Sie 
    unter "about_Remote_Jobs".


 UNTERGEORDNETE AUFTRÄGE
    Jeder Hintergrundauftrag besteht aus einem übergeordneten Auftrag 
    und einem oder mehreren untergeordneten Aufträgen. Bei mit 
    Start-Job oder dem AsJob-Parameter von Invoke-Command gestarteten 
    Aufträgen wird der übergeordnete Auftrag direkt ausgeführt. Von 
    diesem werden keine Befehle ausgeführt oder Ergebnisse 
    zurückgegeben. Die Befehle werden von den untergeordneten 
    Aufträgen ausgeführt. (Die Funktionsweise von mit anderen Cmdlets 
    gestarteten Aufträgen kann hiervon abweichen.)

    Die untergeordneten Aufträge werden in der ChildJobs-Eigenschaft des 
    übergeordneten Auftragsobjekts gespeichert. Die ChildJobs-Eigenschaft 
    kann ein oder viele untergeordnete Auftragsobjekte enthalten. Die 
    untergeordneten Auftragsobjekte besitzen einen Namen, eine ID und 
    eine Instanz-ID, die sich von denen des übergeordneten Auftrags 
    unterscheiden, sodass Sie die übergeordneten und untergeordneten 
    Aufträge einzeln oder als Einheit verwalten können.

    Zum Anzeigen der übergeordneten und untergeordneten Aufträge in 
    einem Auftrag rufen Sie mit dem Cmdlet "Get-Job" den 
    übergeordneten Auftrag ab, und übergeben Sie dann den Auftrag 
    über die Pipeline an den Befehl "Format-List", mit dem die 
    Name-Eigenschaft und die ChildJobs-Eigenschaft der Objekte 
    anzeigt werden, wie im folgenden Befehl veranschaulicht.

        C:\PS> get-job | format-list -property Name, ChildJobs

        Name          : Job1
        ChildJobs     : {Job2}


    Sie können für den untergeordneten Auftrag auch den Befehl 
    "Get-Job" ausführen, wie im folgenden Befehl gezeigt:

        C:\PS> get-job job2

        Id    Name   State      HasMoreData   Location    Command
        --    ----   -----      -----------   --------    -------
        2     Job2   Completed  True          localhost   get-process


    Die Konfiguration des untergeordneten Auftrags hängt von dem 
    Befehl ab, mit dem Sie den Auftrag gestartet haben.

       -- Wenn Sie einen Auftrag auf einem lokalen Computer mit 
          Start-Job starten, besteht der Auftrag aus einem 
          übergeordneten Ausführungsauftrag und einem untergeordneten 
          Auftrag, von dem der Befehl ausgeführt wird.

       -- Wenn Sie einen Auftrag auf einem oder mehreren Computern 
          mit dem AsJob-Parameter von Invoke-Command starten, besteht 
          der Auftrag aus einem übergeordneten Ausführungsauftrag und 
          jeweils einem untergeordneten Auftrag pro Auftrag und Computer.

       -- Wenn Sie den Befehl "Start-Job" mit "Invoke-Command" auf 
          einem oder mehreren Remotecomputern ausführen, ist das 
          Ergebnis mit dem eines lokal auf den einzelnen 
          Remotecomputern ausgeführten Befehls identisch. Der Befehl 
          gibt ein Auftragsobjekt für jeden Computer zurück. Das 
          Auftragsobjekt aus einem übergeordneten Ausführungsauftrag 
          und einem untergeordneten Auftrag, von dem der Befehl 
          ausgeführt wird.
    
    Der übergeordnete Auftrag stellt alle untergeordneten Aufträge 
    dar. Wenn Sie einen übergeordneten Auftrag verwalten, gelten Ihre 
    Aktionen auch für die zugehörigen untergeordneten Aufträge. Wenn 
    Sie z. B. einen übergeordneten Auftrag beenden, werden alle 
    untergeordneten Aufträge ebenfalls beendet. Wenn Sie die 
    Ergebnisse eines übergeordneten Auftrags abrufen, rufen Sie auch 
    die Ergebnisse aller untergeordneten Aufträge ab.

    Sie können untergeordnete Aufträge jedoch auch einzeln verwalten. 
    Dies ist besonders sinnvoll, wenn Sie ein Problem bei einem 
    Auftrag untersuchen oder die Ergebnisse nur eines von mehreren 
    untergeordneten Aufträgen abrufen möchten, die mit dem 
    AsJob-Parameter von Invoke-Command gestartet wurden. (Das 
    Graviszeichen [`] wird als Fortsetzungszeichen verwendet.)

    Im folgenden Befehl wird der AsJob-Parameter von Invoke-Command 
    zum Starten von Hintergrundaufträgen auf dem lokalen Computer und 
    zwei Remotecomputern verwendet. Mit dem Befehl wird der Auftrag 
    in der Variablen "$j" gespeichert.

        C:\PS> $j = invoke-command -computername localhost, Server01, Server02 `
               -command {get-date} -AsJob

    Wenn Sie die Name-Eigenschaft und die ChildJob-Eigenschaft des 
    Auftrags in $j anzeigen, wird angezeigt, dass der Befehl ein 
    Auftragsobjekt mit drei untergeordneten Aufträgen, einem pro 
    Computer, zurückgegeben hat.

        C:\PS> $j | format-list name, childjobs

        Name      : Job3
        ChildJobs : {Job4, Job5, Job6}


    Wenn Sie den übergeordneten Auftrag anzeigen, werden für den 
    Auftrag Fehler angezeigt.

        C:\PS> $j

        Id   Name    State   HasMoreData     Location             Command
        --   ----    -----   -----------     --------             -------
        1    Job3    Failed  True            localhost,server... get-date


    Wenn Sie jedoch für jeden untergeordneten Auftrag den Befehl 
    "Get-Job" ausführen, werden nur für einen Fehler angezeigt.

        PS C:\ps-test> get-job job4, job5, job6

        Id   Name   State      HasMoreData     Location           Command
        --   ----   -----      -----------     --------           -------
        4    Job4   Completed  True            localhost          get-date
        5    Job5   Failed     False           Server01           get-date
        6    Job6   Completed  True            Server02           get-date


    
    Wenn Sie die Ergebnisse aller untergeordneten Aufträge abrufen 
    möchten, können Sie die Ergebnisse des übergeordneten Auftrags 
    mit dem Cmdlet "Receive-Job" abrufen. Sie können jedoch auch die 
    Ergebnisse eines bestimmten untergeordneten Auftrags abrufen, wie 
    im folgenden Befehl gezeigt.

        C:\PS> receive-job -job6 -keep | format-table ComputerName, DateTime -auto

        ComputerName DateTime
        ------------ --------
        Server02     Donnerstag, 13. März 2008 16:16:03 Uhr

    Das Feature für untergeordnete Aufträge von Windows 
    PowerShell-Hintergrundaufträgen bietet Ihnen größere Kontrolle 
    über die von Ihnen ausgeführten Aufträge.


SIEHE AUCH
    about_Jobs
    about_Remote_Jobs
    about_Remote
    Invoke-Command
    Start-Job
    Get-Job
    Wait-Job
    Stop-Job
    Remove-Job
    New-PSSession
    Enter-PSSession
    Exit-PSSession