Freigeben über


about_Transactions

THEMA
    about_Transactions

KURZBESCHREIBUNG
    Beschreibt die Verwaltung von Transaktionsvorgängen in Windows 
    PowerShell. 

DETAILBESCHREIBUNG
    Transaktionen werden in Windows PowerShell ab Windows PowerShell 
    2.0 unterstützt. Mit diesem Feature können Sie Transaktionen 
    starten, die Befehle angeben, die Teil der Transaktion sind, 
    sowie für eine Transaktion einen Commit ausführen und diese 
    zurücksetzen.
    
    
  INFORMATIONEN ZU TRANSAKTIONEN

      In Windows PowerShell werden als Transaktion Sätze von einem 
      oder mehreren Befehlen bezeichnet, die als logische Einheit 
      verwaltet werden. Eine Transaktion kann abgeschlossen werden 
      (ein "Commit" wird ausgeführt), um die von der Transaktion 
      betroffenen Daten zu ändern. Transaktionen können auch 
      vollständig rückgängig gemacht werden ("zurückgesetzt"), sodass 
      die betroffenen Daten von der Transaktion nicht geändert werden. 

      Da die Befehle in einer Transaktion als Einheit verwaltet 
      werden, wird entweder für alle Befehle ein Commit ausgeführt, 
      oder alle Befehle werden zurückgesetzt. 

      Transaktionen werden in der Datenverarbeitung häufig verwendet, 
      besonders für Datenbankvorgänge und Finanztransaktionen. 
      Transaktionen werden am häufigsten verwendet, wenn eine Gruppe 
      von Befehlen im schlimmsten Fall nicht einfach nicht ausgeführt 
      wird, sondern einige Befehle erfolgreich ausgeführt werden, 
      während andere fehlschlagen und das System dadurch in einem 
      beschädigten, falschen oder nicht interpretierbaren Status 
      hinterlassen wird, der nur mit Schwierigkeiten repariert werden 
      kann.

            
  TRANSACTION-CMDLETS

      Windows PowerShell enthält verschiedene Cmdlets für die 
      Verwaltung von Transaktionen.

      Cmdlet                 Beschreibung
      --------------         ---------------------------------   
      Start-Transaction      Startet eine neue Transaktion. 

      Use-Transaction        Fügt der Transaktion einen 
                             Befehl oder einen Ausdruck hinzu. 
                             Für den Befehl müssen für 
                             Transaktionen aktivierte Objekte 
                             verwendet werden.

      Undo-Transaction       Setzt die Transaktion zurück, 
                             sodass keine Daten von der 
                             Transaktion geändert werden.

      Complete-Transaction   Führt einen Commit für die 
                             Transaktion aus. Die von der 
                             Transaktion betroffenen Daten 
                             werden geändert.

      Get-Transaction        Ruft Informationen zur aktiven 
                             Transaktion ab.


      Eine Liste von Transaction-Cmdlets erhalten Sie mit folgendem 
      Befehl:

          get-command *transaction

      Ausführliche Informationen zu diesen Cmdlets erhalten Sie mit 
      folgendem Befehl:

      get-help <Cmdlet-Name> -detailed

      Beispiel:
    
      get-help use-transaction -detailed


  FÜR TRANSAKTIONEN AKTIVIERTE ELEMENTE

      Um an einer Transaktion teilnehmen zu können, müssen das Cmdlet 
      und der Anbieter Transaktionen unterstützen. Dieses Feature ist 
      in die von der Transaktion betroffenen Objekte integriert.
   
      Der Windows PowerShell-Registrierungsanbieter unterstützt 
      Transaktionen unter Windows Vista. Das TransactedString-Objekt 
      (Microsoft.PowerShell.Commands.Management.TransactedString) kann 
      unter jedem Betriebssystem verwendet werden, in dem Windows 
      PowerShell ausgeführt wird. 

      Andere Windows PowerShell-Anbieter können ebenfalls Transaktionen 
      unterstützen. Wenn Sie die Windows PowerShell-Anbieter in der Sitzung 
      suchen möchten, die Transaktionen unterstützen, verwenden Sie den 
      folgenden Befehl, um in der Capabilities-Eigenschaft der Anbieter den 
      Wert "Transactions" zu suchen:

      get-psprovider | where {$_.Capabilities -like "*transactions*"}

      Weitere Informationen zu einem Anbieter finden Sie in der Hilfe 
      für den betreffenden Anbieter.
      Wenn Sie Hilfe zu einem Anbieter abrufen möchten, geben Sie 
      Folgendes ein:

      get-help <Anbietername>

      Hilfeinformationen zum Registrierungsanbieter können Sie z. B. 
      mit folgendem Befehl abrufen:

      get-help registry
  


  DER USETRANSACTION-PARAMETER

      Cmdlets, die Transaktionen unterstützen, verfügen über einen 
      UseTransaction-Parameter. Mit diesem Parameter wird der Befehl 
      in der aktiven Transaktion eingeschlossen. Sie können den 
      vollständigen Namen des Parameters oder aber dessen Alias, "usetx", 
      verwenden.

      Der Parameter kann nur verwendet werden, wenn die Sitzung eine 
      aktive Transaktion enthält. Wenn Sie einen Befehl mit dem 
      UseTransaction-Parameter eingeben und keine aktive Transaktion 
      vorhanden ist, wird für den Befehl ein Fehler ausgegeben.

      Wenn Sie Cmdlets mit dem UseTransaction-Parameter suchen 
      möchten, geben Sie Folgendes ein:

      get-help * -parameter UseTransaction  

      Alle Kern-Cmdlets von Windows PowerShell, die mit Windows 
      PowerShell-Anbietern verwendet werden können, unterstützen 
      Transaktionen. Daher können Sie Transaktionen über die 
      Anbieter-Cmdlets verwalten. 

      Weitere Informationen zur Windows PowerShell-Anbietern finden 
      Sie unter "about_Providers".  
 

  DAS TRANSACTION-OBJEKT

      Transaktionen werden in Windows PowerShell durch ein 
      Transaktionsobjekt, System.Management.Automation.Transaction, 
      dargestellt.

      Das Objekt verfügt über die folgenden Eigenschaften:

      RollbackPreference: 
          Enthält die Einstellungen für die Zurücksetzung der 
          aktuellen Transaktion. Die Einstellung für die 
          Zurücksetzung können Sie festlegen, wenn Sie die 
          Transaktion mit Start-Transaction starten. 

          Die Einstellung für die Zurücksetzung bestimmt die 
          Bedingungen, unter denen die Transaktion automatisch 
          zurückgesetzt wird. Gültig sind die Werte "Error", 
          "TerminatingError" und "Never". Der Standardwert ist "Error".

      Status:              
         Enthält den aktuellen Status der Transaktion. Gültig sind 
         die Werte "Active", "Committed" und "RolledBack".


      SubscriberCount:              
         Enthält die Anzahl der Abonnenten für die Transaktion. Einer 
         Transaktion wird ein Abonnent hinzugefügt, wenn Sie eine 
         Transaktion starten, während eine andere Transaktion 
         ausgeführt wird. Die Abonnentenanzahl wird gesenkt, wenn ein 
         Abonnent einen Commit für die Transaktion ausführt.
    

  AKTIVE TRANSAKTIONEN

      In Windows PowerShell ist jeweils nur eine Transaktion aktiv, 
      und Sie können nur die aktive Transaktion verwalten. In einer 
      einzelnen Sitzung können mehrere Transaktionen gleichzeitig 
      ausgeführt werden, jedoch ist nur die zuletzt gestartete 
      Transaktion aktiv. 

      Daher können Sie beim Verwenden der Transaction-Cmdlets keine 
      bestimmte Transaktion angeben. Befehle werden immer auf die 
      aktive Transaktion angewendet.

      Im Verhalten des Cmdlet "Get-Transaction" wird dies am 
      offensichtlichsten. Wenn Sie den Befehl "Get-Transaction" 
      eingeben, ruft Get-Transaction stets nur ein Transaktionsobjekt 
      ab. Dieses Objekt stellt die aktive Transaktion dar. 

      Wenn Sie eine andere Transaktion verwalten möchten, müssen Sie 
      zuerst die aktive Transaktion beenden, indem Sie für diese 
      einen Commit ausführen oder sie zurücksetzen. In diesem Fall 
      wird die vorherige Transaktion automatisch aktiv. Transaktionen 
      werden in der umgekehrten Reihenfolge aktiv, in der sie 
      gestartet wurden, sodass immer die zuletzt gestartete 
      Transaktion aktiv ist.


  ABONNENTEN AND UNABHÄNGIGE TRANSAKTIONEN

      Wenn Sie eine Transaktion starten, während eine andere 
      Transaktion ausgeführt wird, wird von Windows PowerShell 
      standardmäßig keine neue Transaktion gestartet. Stattdessen 
      wird der aktuellen Transaktion ein "Abonnent" hinzugefügt.

      Wenn eine Transaktion mehrere Abonnenten umfasst, wird mit dem 
      einzelnen Befehl "Undo-Transaction" zu beliebigem Zeitpunkt die 
      gesamte Transaktion für alle Abonnenten zurückgesetzt. Um 
      jedoch einen Commit für die Transaktion auszuführen, müssen Sie 
      den Befehl "Complete-Transaction" für jeden Abonnenten eingeben.

      Wenn Sie die Anzahl von Abonnenten für eine Transaktion suchen 
      möchten, überprüfen Sie die SubscriberCount-Eigenschaft des 
      Transaktionsobjekts. Im folgenden Befehl wird z. B. das Cmdlet 
      "Get-Transaction" verwendet, um den Wert für die SubscriberCount
      -Eigenschaft der aktiven Transaktion abzurufen:

          (Get-Transaction).SubscriberCount
        
      Im Standardverhalten wird ein Abonnent hinzugefügt, da sich die 
      meisten Transaktionen, die gestartet werden, während eine 
      andere Transaktion ausgeführt wird, auf die ursprüngliche 
      Transaktion beziehen. In einem typischen Modell wird mit einem 
      Skript, das eine Transaktion enthält, ein Hilfsskript 
      aufgerufen, das eine eigene Transaktion enthält. Da die 
      Transaktionen aufeinander bezogen sind, müssen sie 
      zurückgesetzt werden, oder muss ein einzelner Commit für alle 
      ausgeführt werden.

      Mit dem Independent-Parameter des Cmdlet "Start-Transaction" 
      können Sie jedoch eine Transaktion starten, die von der 
      aktuellen Transaktion unabhängig ist.

      Wenn Sie eine unabhängige Transaktion starten, wird mit 
      Start-Transaction ein neues Transaktionsobjekt erstellt, und 
      die neue Transaktion wird aktiv. Für die unabhängige 
      Transaktion kann ein Commit ausgeführt werden, oder sie kann 
      zurückgesetzt werden, ohne dass die ursprüngliche Transaktion 
      beeinflusst wird.

      Wenn die unabhängige Transaktion beendet wird (durch Commit 
      oder Zurücksetzen), wird die ursprüngliche Transaktion wieder aktiv.


  ÄNDERN VON DATEN

      Wenn Sie mit Transaktionen Daten ändern, werden die von der 
      Transaktion betroffenen Daten erst geändert, wenn Sie für die 
      Transaktion einen Commit ausgeführt haben.
      Dieselben Daten können jedoch von Befehlen geändert werden, die 
      nicht Teil der Transaktion sind. 

      Diesen Umstand sollten Sie nicht vergessen, wenn Sie mit 
      Transaktionen freigegebene Daten verwalten. In der Regel 
      verfügen Datenbanken über Mechanismen, mit denen die Daten 
      gesperrt werden, während Sie an diesen arbeiten. Damit wird 
      verhindert, dass diese von anderen Benutzern und anderen 
      Befehlen, Skripts und Funktionen geändert werden.

      Diese Sperre bildet jedoch ein Feature der Datenbank. Mit den 
      Transaktionen steht sie in keinem Bezug. Wenn Sie mit einem für 
      Transaktionen aktivierten Dateisystem oder einem anderem 
      Datenspeicher arbeiten, können die Daten geändert werden, 
      während die Transaktion ausgeführt wird.


BEISPIELE
    In den Beispielen in diesem Abschnitt wird der Windows PowerShell-
    Registrierungsanbieter verwendet, und es wird davon ausgegangen, dass 
    Sie mit diesem vertraut sind. Wenn Sie Informationen zum 
    Registrierungsanbieter benötigen, geben Sie "get-help registry" ein.

  BEISPIEL 1: AUSFÜHREN EINES COMMITS FÜR EINE TRANSAKTION

    Das Cmdlet "Start-Transaction" ermöglicht das Erstellen einer 
    Transaktion. Mit dem folgenden Befehl starten Sie eine 
    Transaktion mit den Standardeinstellungen.
 
    start-transaction

    Wenn Sie Befehle in die Transaktion einschließen möchten, 
    verwenden Sie den UseTransaction-Parameter des Cmdlet. 
    Standardmäßig werden Befehle nicht in die Transaktion eingeschlossen.

    Zum Beispiel ist der folgende Befehl, mit dem der aktuellen 
    Speicherort im Schlüssel "Software" des Laufwerks "HKCU:" 
    festlegt wird, nicht in die Transaktion eingeschlossen.

        cd hkcu:\Software

    Im folgenden Befehl zum Erstellen des Schlüssels "MyCompany" wird 
    mit dem UseTransaction-Parameter des Cmdlet "New-Item" der Befehl 
    in die aktive Transaktion eingeschlossen.

        new-item MyCompany -UseTransaction

    Mit dem Befehl wird ein Objekt zurückgegeben, das den neuen 
    Schlüssel darstellt, doch da der Befehl Teil der Transaktion ist, 
    wird die Registrierung noch nicht geändert.

        Struktur: HKEY_CURRENT_USER\Software

        SKC  VC Name                           Property
        ---  -- ----                           --------
          0   0 MyCompany                      {}

    Wenn Sie für die Transaktion einen Commit ausführen möchten, 
    verwenden Sie das Cmdlet "Complete-Transaction".
    Da dieses sich stets auf die aktive Transaktion auswirkt, können 
    Sie die Transaktion nicht angeben.

    complete-transaction  


    Als Ergebnis wird der Schlüssel "MyCompany" der Registrierung 
    hinzugefügt.

    dir m*
       
        Struktur: HKEY_CURRENT_USER\software

        SKC  VC Name                           Property
        ---  -- ----                           --------
         83   1 Microsoft                      {(default)}
          0   0 MyCompany                      {}


  BEISPIEL 2: ZURÜCKSETZEN EINER TRANSAKTION

    Das Cmdlet "Start-Transaction" ermöglicht das Erstellen einer 
    Transaktion. Mit dem folgenden Befehl starten Sie eine 
    Transaktion mit den Standardeinstellungen.
 
    start-transaction

    Im folgenden Befehl zum Erstellen des Schlüssels "MyOtherCompany" 
    wird mit dem UseTransaction-Parameter des Cmdlet "New-Item" der 
    Befehl in die aktive Transaktion eingeschlossen.

        new-item MyOtherCompany -UseTransaction

    Mit dem Befehl wird ein Objekt zurückgegeben, das den neuen 
    Schlüssel darstellt, doch da der Befehl Teil der Transaktion ist, 
    wird die Registrierung noch nicht geändert.

        Struktur: HKEY_CURRENT_USER\Software

        SKC  VC Name                           Property
        ---  -- ----                           --------
          0   0 MyOtherCompany                 {}


    Zum Zurücksetzen der Transaktion verwenden Sie das Cmdlet 
    "Undo-Transaction".
    Da dieses sich stets auf die aktive Transaktion auswirkt, geben 
    Sie die Transaktion nicht an.

    Undo-transaction  

    Im Ergebnis wird der Schlüssel "MyOtherCompany" der Registrierung 
    nicht hinzugefügt.

    dir m*
       
        Struktur: HKEY_CURRENT_USER\software

        SKC  VC Name                           Property
        ---  -- ----                           --------
         83   1 Microsoft                      {(default)}
          0   0 MyCompany                      {}


 
  BEISPIEL 3: ANZEIGEN EINER TRANSAKTION IN DER VORSCHAU

    In der Regel werden durch die in Transaktionen verwendeten 
    Befehle Daten geändert. Befehle zum Abrufen von Daten sind in 
    einer Transaktion jedoch auch nützlich, da die Daten so innerhalb 
    der Transaktion abgerufen werden. Dies ermöglicht eine Vorschau 
    der Änderungen, die bei einem Commit für die Transaktion 
    verursacht werden.

    Im folgenden Beispiel wird gezeigt, wie mit dem Befehl 
    "Get-ChildItem" (Alias: "dir") die Änderungen in einer 
    Transaktion als Vorschau angezeigt werden.


    Mit dem folgenden Befehl wird eine Transaktion gestartet.

    start-transaction

    Im folgenden Befehl wird der Registrierungsschlüssel "MyKey" mit 
    dem Cmdlet "New-ItemProperty" dem Schlüssel "MyCompany" 
    hinzugefügt. In dem Befehl wird mit dem UseTransaction-Parameter 
    der Befehl in die Transaktion eingeschlossen.


        new-itemproperty -path MyCompany -Name MyKey -value 123 
        -UseTransaction

    Der Befehl gibt ein Objekt zurück, das den neuen Registrierungsein
    trag darstellt, jedoch wird der Registrierungseintrag nicht geändert.

        MyKey
        -----
        123


    Wenn Sie die derzeit in der Registrierung vorhandenen Elemente 
    abrufen möchten, verwenden Sie den Befehl "Get-ChildItem" ("dir") 
    ohne den UseTransaction-Parameter. Mit dem folgenden Befehl 
    werden Elemente abgerufen, die mit "M" beginnen.

    dir m*


    Das Ergebnis zeigt, dass dem Schlüssel MyCompany noch keine 
    Einträge hinzugefügt wurden.

        Struktur: HKEY_CURRENT_USER\Software

        SKC  VC Name                           Property
        ---  -- ----                           --------
        83   1 Microsoft                      {(default)}
         0   0 MyCompany                      {}


    Wenn Sie Auswirkungen eines Commits für die Transaktion in der 
    Vorschau anzeigen möchten, geben Sie den Befehl "Get-ChildItem" 
    ("dir") mit dem UseTransaction-Parameter ein. Dieser Befehl 
    bietet innerhalb der Transaktion eine Ansicht der Daten.


    dir m* -useTransaction


    Das Ergebnis zeigt, dass bei ausgeführtem Commit für die 
    Transaktion der Schlüssel "MyCompany" dem Schlüssel "MyKey" 
    hinzugefügt wird.


        Struktur: HKEY_CURRENT_USER\Software

        SKC  VC Name                           Property
        ---  -- ----                           --------
        83   1 Microsoft                      {(default)}
         0   1 MyCompany                      {MyKey}


     
  BEISPIEL 4: KOMBINIEREN VON BEFEHLEN, DIE TEIL BZW. NICHT TEIL VON 
  TRANSAKTIONEN SIND

    Sie können während einer Transaktion Befehle eingeben, die nicht 
    Teil einer Transaktion sind. Die Befehle, die nicht Teil von 
    Transaktionen sind, wirken sich sofort auf die Daten, auf die 
    Transaktion jedoch überhaupt nicht aus.

    Im folgenden Befehl wird eine Transaktion im Registrierungsschlüss
    el "HKCU:\Software" gestartet.

    start-transaction


    In den nächsten drei Befehlen werden mit dem Cmdlet "New-Item" 
    Schlüssel zur Registrierung hinzugefügt. Im ersten und dritten 
    Befehl wird der UseTransaction-Parameter verwendet, um Befehle in 
    die Transaktion einzuschließen. Im zweiten Befehl ist der 
    Parameter ausgelassen. Da der zweite Befehl nicht Teil der 
    Transaktion enthalten ist, wird er sofort wirksam.

        new-item MyCompany1 -UseTransaction

        new-item MyCompany2

        new-item MyCompany3 -UseTransaction


    Wenn Sie den aktuellen Status der Registrierung anzeigen möchten, 
    verwenden Sie den Befehl "Get-ChildItem" ("dir") ohne den 
    UseTransaction-Parameter. Mit diesem Befehl werden Elemente 
    abgerufen, die mit "M" beginnen.

    dir m*

    Das Ergebnis zeigt, dass der Schlüssel "MyCompany2" der 
    Registrierung hinzugefügt wird, aber die Schlüssel "MyCompany1" 
    und "MyCompany3", die Teil der Transaktion sind, nicht 
    hinzugefügt werden.
     
        Struktur: HKEY_CURRENT_USER\Software

        SKC  VC Name                           Property
        ---  -- ----                           --------
        83   1 Microsoft                      {(default)}
         0   0 MyCompany2                      {}


    Der folgende Befehl führt einen Commit für die Transaktion aus. 

        complete-transaction

    Nun werden die Schlüssel, die als Teil der Transaktion 
    hinzugefügt wurden, in der Registrierung angezeigt.

    dir m*

     
        Struktur: HKEY_CURRENT_USER\Software

        SKC  VC Name                           Property
        ---  -- ----                           --------
        83   1 Microsoft                      {(default)}
        0    0 MyCompany1                     {}
        0    0 MyCompany2                     {}
        0    0 MyCompany3                     {}


  BEISPIEL 5: VERWENDEN DER AUTOMATISCHEN ZURÜCKSETZUNG

    Wenn ein Befehl in einer Transaktion einen Fehler beliebiger Art 
    generiert, wird die Transaktion automatisch zurückgesetzt. 

    Dieses Standardverhalten wurde für Skripts entworfen, mit denen 
    Transaktionen ausgeführt werden. Skripts wurden in der Regel 
    umfangreich getestet und enthalten eine Fehlerbehandlungslogik, 
    daher werden keine Fehler erwartet, und die Transaktion sollte 
    normal beendet werden. 

    Im ersten Befehl wird eine Transaktion im Registrierungsschlüssel 
    "HKCU:\Software" gestartet.

    start-transaction

    Im folgenden Befehl wird der Registrierungsschlüssel "MyCompany" 
    mit dem Cmdlet "New-Item" der Registrierung hinzugefügt. In dem 
    Befehl wird mit dem UseTransaction-Parameter (Alias: "usetx") der 
    Befehl in die Transaktion eingeschlossen.

    New-Item MyCompany -UseTX

    Da der Schlüssel "MyCompany" bereits in der Registrierung ist, 
    kommt es zu einem Fehler beim Befehl, und die Transaktion wird 
    zurückgesetzt.

        New-Item: Ein Schlüssel unter diesem Pfad ist bereits Bei 
        Zeile:1 Zeichen:9 vorhanden
        + new-item <<<< MyCompany -usetx

    Mit dem Befehl "Get-Transaction" wird überprüft, ob die 
    Transaktion zurückgesetzt wurde und SubscriberCount auf 0 
    festgelegt ist.

        RollbackPreference   SubscriberCount   Status
        ------------------   ---------------   ------
        Error                0                 RolledBack 


        
  BEISPIEL 6: ÄNDERN DER EINSTELLUNG FÜR DIE ZURÜCKSETZUNG

    Wenn die Transaktion stärker fehlertolerant sein soll, können Sie 
    die Einstellung über den RollbackPreference-Parameter von 
    Start-Transaction ändern.

    Mit dem folgenden Befehl wird eine Transaktion mit der 
    Zurücksetzungseinstellung "Never" gestartet.

         start-transaction -rollbackpreference Never

    Wenn bei dem Befehl ein Fehler auftritt, wird in diesem Fall die 
    Transaktion nicht automatisch zurückgesetzt.

    New-Item MyCompany -UseTX

        New-Item: Ein Schlüssel unter diesem Pfad ist bereits Bei 
        Zeile:1 Zeichen:9 vorhanden
        + new-item <<<< MyCompany -usetx
   
     
    Da die Transaktion noch immer aktiv ist, können Sie den Befehl 
    als Teil der Transaktion erneut übermitteln. 

    New-Item MyOtherCompany -UseTX



  BEISPIEL 7: VERWENDEN DES CMDLETS "USE-TRANSACTION"

    Mit dem Cmdlet "Use-Transaction" können Sie direkt Skripts für 
    Microsoft .NET Framework-Objekte erstellen, die für Transaktionen 
    aktiviert sind.
    Use-Transaction akzeptiert Skriptblöcke, die nur Befehle und 
    Ausdrücke enthalten dürfen, die für Transaktionen aktivierte .NET 
    Framework-Objekte verwenden, z. B. Instanzen der 
    Microsoft.PowerShell.Commands.Management.TransactedString-Klasse.

    Mit dem folgenden Befehl wird eine Transaktion gestartet.

         start-transaction

    Mit dem folgenden Befehl "New-Object" wird eine Instanz der 
    TransactedString-Klasse erstellt und in der Variablen "$t" 
    gespeichert.

         $t = New-Object Microsoft.PowerShell.Commands.Management.Tran
         sactedString

    Im folgenden Befehl wird mit der Append-Methode des 
    TransactedString-Objekts Text zur Zeichenfolge hinzugefügt. Da 
    der Befehl nicht Teil der Transaktion ist, wird die Änderung 
    sofort wirksam.

     $t.append("Windows") 

    Mit dem folgenden Befehl wird die gleiche Append-Methode 
    verwendet, um Text hinzuzufügen, jedoch wird der Text als Teil 
    der Transaktion hinzugefügt. Der Befehl wird in geschweifte 
    Klammern eingeschlossen und als Wert des ScriptBlock-Parameters 
    von Use-Transaction festgelegt. Der UseTransaction-Parameter 
    (UseTx) ist erforderlich.

     use-transaction {$t.append(" PowerShell")} -usetx

    Um den aktuellen Inhalt der in die Transaktion eingefügten 
    Zeichenfolge in "$t" anzuzeigen, verwenden Sie die ToString-Method
    e des TransactedString-Objekts.
                 
     $t.tostring()   

    Die Ausgabe zeigt, dass nur die Änderungen wirksam wurden, die 
    nicht Teil der Transaktion sind.

     Windows    

    Wenn Sie den aktuellen Inhalt der in die Transaktion eingefügten 
    Zeichenfolge in "$t" innerhalb der Transaktion anzeigen möchten, 
    betten Sie den Ausdruck in den Befehl "Use-Transaction" ein. 

     use-transaction {$s.tostring()} -usetx   

    Die Ausgabe zeigt die Transaktionsansicht.

     Windows PowerShell

    Der folgende Befehl führt einen Commit für die Transaktion aus.

     complete-transaction

    So zeigen Sie die endgültige Zeichenfolge an:

     $t.tostring()
    
     Windows PowerShell


  BEISPIEL 7: VERWALTEN VON TRANSAKTIONEN MIT MEHREREN ABONNENTEN

    Wenn Sie eine Transaktion starten, während eine andere 
    Transaktion ausgeführt wird, wird von Windows PowerShell 
    standardmäßig keine zweite Transaktion gestartet. Stattdessen 
    wird der aktuellen Transaktion ein Abonnent hinzugefügt. 

    Dieses Beispiel veranschaulicht das Anzeigen und Verwalten einer 
    Transaktion mit mehreren Abonnenten.

    Beginnen Sie, indem Sie eine Transaktion im Schlüssel 
    "HKCU:\Software" starten.
    
        start-transaction
    
    Mit dem folgenden Befehl rufen Sie mit dem Cmdlet "Get-Transaction
    " die aktive Transaktion ab.

    get-transaction


    Das Ergebnis zeigt das Objekt, das die aktive Transaktion darstellt.

        RollbackPreference   SubscriberCount   Status
        ------------------   ---------------   ------
        Error                1                 Active 
     
    Mit dem folgenden Befehl fügen Sie den Schlüssel "MyCompany" der 
    Registrierung hinzu.
    In dem Befehl wird mit dem UseTransaction-Parameter der Befehl in 
    die Transaktion eingeschlossen.
                 
        new-item MyCompany -UseTransaction


    Der folgende Befehl startet mit dem Befehl "Start-Transaction" 
    eine Transaktion. Zwar wird dieser Befehl an der Eingabeaufforderu
    ng eingegeben, doch tritt dieses Szenario mit höherer 
    Wahrscheinlichkeit ein, wenn Sie ein Skript mit einer Transaktion 
    ausführen.

        start-transaction


    Der Befehl "Get-Transaction" zeigt, dass die Abonnentenanzahl im 
    Transaktionsobjekt erhöht wurde. Der Wert ist nun 2.   

        RollbackPreference   SubscriberCount   Status
        ------------------   ---------------   ------
        Error                2                 Active 

    Im nächsten Befehl wird der Registrierungsschlüssel "MyKey" mit 
    dem Cmdlet "New-ItemProperty" dem Schlüssel "MyCompany" 
    hinzugefügt. Mit dem UseTransaction-Parameter wird der Befehl in 
    die Transaktion eingeschlossen.

        new-itemproperty -path MyCompany -name MyKey -UseTransaction


    Der Schlüssel "MyCompany" ist in der Registrierung nicht 
    vorhanden, doch wird dieser Befehl erfolgreich ausgeführt, da die 
    beiden Befehle Teil derselben Transaktion sind.

    Der folgende Befehl führt einen Commit für die Transaktion aus. 
    Wenn die Transaktion zurückgesetzt wurde, wird die Transaktion 
    für alle Abonnenten zurückgesetzt.

    complete-transaction


    Der Befehl "Get-Transaction" zeigt, dass die Abonnentenanzahl im 
    Transaktionsobjekt 1 ist, aber der Wert von "Status" dennoch auf 
    "Active" (nicht "Committed") festgelegt ist.   


        RollbackPreference   SubscriberCount   Status
        ------------------   ---------------   ------
        Error                1                 Active 


    Wenn Sie den Commit für die Transaktion beenden möchten, geben 
    Sie den Befehl "Complete-Transaction" ein zweites Mal ein. Wenn 
    ein Commit für eine Transaktion mit mehreren Abonnenten 
    ausgeführt werden soll, müssen Sie den Befehl "Complete-Transactio
    n" für jeden Start-Transaction-Befehl eingeben.

        complete-transaction

      
    Ein weiterer Befehl Get-Transaction zeigt, dass für die 
    Transaktion ein Commit ausgeführt wurde.


        RollbackPreference   SubscriberCount   Status
        ------------------   ---------------   ------
        Error                0                 Committed 

  BEISPIEL 8: VERWALTEN UNABHÄNGIGER TRANSAKTIONEN

    Wenn Sie eine Transaktion starten, während eine andere 
    Transaktion ausgeführt wird, können Sie die neue Transaktion 
    mithilfe des Independent-Parameters von Start-Transaction als von 
    der ursprünglichen Transaktion unabhängig festlegen.

    In diesem Fall erstellt Start-Transaction ein neues 
    Transaktionsobjekt und legt die neue Transaktion als aktiv fest.

    Beginnen Sie, indem Sie eine Transaktion im Schlüssel 
    "HKCU:\Software" starten.
    
        start-transaction
     
    Mit dem folgenden Befehl rufen Sie mit dem Cmdlet "Get-Transaction
    " die aktive Transaktion ab.

    get-transaction


    Das Ergebnis zeigt das Objekt, das die aktive Transaktion darstellt.

        RollbackPreference   SubscriberCount   Status
        ------------------   ---------------   ------
        Error                1                 Active 
     
    Mit dem folgenden Befehl wird der Registrierungsschlüssel 
    "MyCompany" als Teil der Transaktion hinzugefügt. Mit dem 
    UseTransaction-Parameter (UseTx) wird der Befehl in die aktive 
    Transaktion eingeschlossen.

    new-item MyCompany -use


    Mit dem folgenden Befehl wird eine neue Transaktion gestartet. Im 
    Befehl wird mit dem Independent-Parameter angegeben, dass diese 
    Transaktion kein Abonnent der aktiven Transaktion ist.

         start-transaction -independent

    Wenn Sie eine unabhängige Transaktion erstellen, wird die neue 
    (zuletzt erstellte) Transaktion die aktive Transaktion. Mit dem 
    Befehl "Get-Transaction" können Sie die aktive Transaktion abrufen. 

    get-transaction

    SubscriberCount ist für die Transaktion 1, d. h., es sind keine 
    weiteren Abonnenten vorhanden, und es handelt sich um eine neue 
    Transaktion.

        RollbackPreference   SubscriberCount   Status
        ------------------   ---------------   ------
        Error                1                 Active 
    Sie können die ursprüngliche Transaktion erst verwalten, wenn die 
    neue Transaktion beendet wurde (durch Commit oder Zurücksetzen).

    Mit dem folgenden Befehl fügen Sie den Schlüssel "MyOtherCompany" 
    der Registrierung hinzu.
    Mit dem UseTransaction-Parameter (UseTx) wird der Befehl in die 
    aktive Transaktion eingeschlossen.

        new-item MyOtherCompany -usetx

    Setzen Sie die Transaktion nun zurück. Bei einer einzelnen 
    Transaktion mit zwei Abonnenten wird beim Zurücksetzen der 
    Transaktion die gesamte Transaktion für alle Abonnenten zurückgesetzt.

    Da diese Transaktionen jedoch unabhängig sind, werden beim 
    Zurücksetzen der letzten Transaktion die Änderungen an der 
    Registrierung verworfen, und die ursprüngliche Transaktion wird aktiv.

        undo-transaction

    Mit dem Befehl "Get-Transaction" wird überprüft, ob die 
    ursprüngliche Transaktion in der Sitzung immer noch aktiv ist.


    get-transaction

        RollbackPreference   SubscriberCount   Status
        ------------------   ---------------   ------
        Error                1                 Active 

    Der folgende Befehl führt einen Commit für die aktive Transaktion aus.

        complete-transaction


    Mit dem Befehl Get-ChildItem wird angezeigt, dass die 
    Registrierung geändert wurde.

    dir m*


        Struktur: HKEY_CURRENT_USER\Software

        SKC  VC Name                           Property
        ---  -- ----                           --------
        83   1 Microsoft                      {(default)}
         0   0 MyCompany                      {}

SIEHE AUCH
    Start-Transaction
    Get-Transaction
    Complete-Transaction
    Undo-Transaction
    Use-Transaction
    Registrierung (Anbieter)
    about_Providers
    Get-PSProvider
    Get-ChildItem