Führt einen Commit für die aktive Transaktion aus.

Syntax

Complete-Transaction [-Bestätigung] [-WhatIf] [<CommonParameters>]

Beschreibung

Das Cmdlet "Complete-Transaction" führt einen Commit für eine aktive Transaktion aus. Wenn Sie für eine Transaktion einen Commit ausführen, werden die Befehle in der Transaktion abgeschlossen, und die von den Befehlen betroffenen Daten werden geändert.

Wenn die Transaktion mehrere Abonnenten umfasst, müssen Sie zum Ausführen des Commits für die Transaktion den Befehl "Complete-Transaction" für den Befehl "Start-Transaction" eingeben.

Das Cmdlet "Complete-Transaction" gehört zu einem Satz von Cmdlets, die das Transaktionsfeature in Windows PowerShell unterstützen. Weitere Informationen finden Sie unter "about_Transactions".

Parameter

-Bestätigung

Fordert Sie vor der Ausführung des Befehls zur Bestätigung auf.

Erforderlich?

false

Position?

named

Standardwert

Pipelineeingaben akzeptieren?

false

Platzhalterzeichen akzeptieren?

false

-WhatIf

Beschreibt die Auswirkungen einer Ausführung des Befehls, ohne den Befehl tatsächlich auszuführen.

Erforderlich?

false

Position?

named

Standardwert

Pipelineeingaben akzeptieren?

false

Platzhalterzeichen akzeptieren?

false

<CommonParameters>

Dieses Cmdlet unterstützt die folgenden allgemeinen Parameter: -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer und -OutVariable. Weitere Informationen finden Sie unter about_Commonparameters.

Eingaben und Ausgaben

Der Eingabetyp ist der Typ der Objekte, die über die Pipeline an das Cmdlet übergeben werden können. Der Rückgabetyp ist der Typ der Objekte, die das Cmdlet zurückgibt.

Eingaben

None

Objekte können nicht über die Pipeline an Complete-Transaction übergeben werden.

Ausgaben

None

Dieses Cmdlet gibt keine Objekte zurück.

Hinweise

Sie können keine Transaktion zurücksetzen, für die ein Commit ausgeführt wurde, oder einen Commit für eine Transaktion ausführen, die zurückgesetzt wurde.

Sie können keine andere Transaktion als die aktive Transaktion zurücksetzen. Zum Zurücksetzen einer anderen Transaktion müssen Sie zuerst einen Commit für die aktive Transaktion ausführen oder diese zurücksetzen.

Wenn für einen Teil einer Transaktion kein Commit ausgeführt werden kann, z. B. wenn ein Befehl in der Transaktion zu einem Fehler führt, wird standardmäßig die gesamte Transaktion zurückgesetzt.

Beispiel 1

C:\PS>cd hkcu:\software

PS HKCU:\software> start-transaction

PS HKCU:\software> new-item MyCompany -UseTransaction
PS HKCU:\software> dir m*

   Hive: HKEY_CURRENT_USER\software

SKC  VC Name                           Property
---  -- ----                           --------
 82   1 Microsoft                      {(default)}

PS HKCU:\software> complete-transaction
PS HKCU:\software> dir m*

   Hive: HKEY_CURRENT_USER\Software

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

Beschreibung
-----------
In diesem Beispiel werden die Auswirkungen veranschaulicht, wenn mit dem Cmdlet "Complete-Transaction" ein Commit für eine Transaktion ausgeführt wird.

Der Befehl "Start-Transaction" startet die Transaktion. Der Befehl "New-Item" schließt den Befehl mit dem UseTransaction-Parameter in die Transaktion ein.

Der erste dir-Befehl (Get-ChildItem) zeigt an, dass das neue Element noch nicht zur Registrierung hinzugefügt wurde.

Der Befehl "Complete-Transaction" führt einen Commit für die Transaktion aus. Hierdurch wird die Registrierungsänderung wirksam. Der zweite dir-Befehl zeigt daher an, dass die Registrierung geändert wurde.






Beispiel 2

C:\PS>cd hkcu:\software

PS HKCU:\software> start-transaction
PS HKCU:\software> new-item MyCompany -UseTransaction

   Hive: HKEY_CURRENT_USER\Software

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

PS HKCU:\software> start-transaction
PS HKCU:\Software> Get-Transaction

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

PS HKCU:\software> new-itemproperty -path MyCompany -name MyKey -value -UseTransaction

MyKey
-----
123

PS HKCU:\software> complete-transaction
PS HKCU:\software> get-transaction

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

PS HKCU:\software> dir m*

   Hive: HKEY_CURRENT_USER\Software

SKC  VC Name                           Property
---  -- ----                           --------
 82   1 Microsoft                      {(default)}

PS HKCU:\software> complete-transaction
PS HKCU:\software> dir m*

   Hive: HKEY_CURRENT_USER\Software

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

Beschreibung
-----------
In diesem Beispiel wird veranschaulicht, wie mit Complete-Transaction ein Commit für eine Transaktion mit mehreren Abonnenten ausgeführt wird. 

Wenn ein Commit für eine Transaktion mit mehreren Abonnenten ausgeführt werden soll, müssen Sie den Befehl "Complete-Transaction" für jeden Start-Transaction-Befehl eingeben. Die Daten werden nur geändert, wenn der abschließende Befehl "Complete-Transaction" gesendet wird. 

Für Demonstrationszwecke werden in diesem Beispiel eine Reihe von Befehlen in der Befehlszeile eingegeben. In der Praxis werden Transaktionen häufig in Skripts ausgeführt, wobei die sekundäre Transaktion von einer Funktion oder einem Hilfsskript ausgeführt wird, das vom Hauptskript aufgerufen wird.

In diesem Beispiel startet der Befehl "Start-Transaction" die Transaktion. Der Befehl "New-Item" fügt den Schlüssel "MyCompany" mit dem UseTransaction-Parameter dem Schlüssel "Software" hinzu. Obwohl der Befehl "New-Item" ein Schlüsselobjekt zurückgibt, werden die Daten in der Registrierung noch nicht geändert.

Der zweite Befehl "Start-Transaction" fügt der vorhandenen Transaktion einen zweiten Abonnenten hinzu. Der Befehl "Get-Transaction" bestätigt, dass die Anzahl der Abonnenten 2 beträgt. Der Befehl "New-ItemProperty" mit dem UseTransaction-Parameter fügt dem neuen Schlüssel "MyCompany" einen Registrierungseintrag hinzu. Auch hier gibt der Befehl einen Wert zurück, die Registrierung wird jedoch nicht geändert.

Der erste Befehl "Complete-Transaction" reduziert die Abonnentenanzahl um 1. Dies wird von dem Befehl "Get-Transaction" bestätigt. Es werden jedoch keine Daten geändert, wie von einem "dir m*"-Befehl (Get-ChildItem) gezeigt wird.

Der zweite Befehl "Complete-Transaction" führt einen Commit für die gesamte Transaktion aus und ändert die Daten in der Registrierung. Dies wird durch einen zweiten "dir m*"-Befehl bestätigt, der die Änderungen anzeigt.






Beispiel 3

C:\PS>cd hkcu:\software

PS HKCU:\software> start-transaction

PS HKCU:\software> new-item MyCompany -UseTransaction

PS HKCU:\software> dir m*

   Hive: HKEY_CURRENT_USER\Software

SKC  VC Name                           Property
---  -- ----                           --------
 82   1 Microsoft                      {(default)}


PS HKCU:\software> dir m* -UseTransaction

   Hive: HKEY_CURRENT_USER\Software

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

PS HKCU:\software> complete-transaction

Beschreibung
-----------
In diesem Beispiel werden die Vorteile von Get-*-Befehlen und anderen Befehlen in einer Transaktion veranschaulicht, die keine Daten ändern. Wenn ein "get-*"-Befehl in einer Transaktion verwendet wird, ruft er die Objekte ab, die Teil der Transaktion sind. So können Sie die Änderungen in der Transaktion in der Vorschau anzuzeigen, bevor ein Commit für die Änderungen ausgeführt wird.

In diesem Beispiel wird eine Transaktion gestartet. Der Befehl "New-Item" mit dem UseTransaction-Parameter fügt der Registrierung als Teil der Transaktion einen neuen Schlüssel hinzu.

Da der neue Registrierungsschlüssel der Registrierung erst hinzugefügt wird, wenn der Befehl "Complete-Transaction" ausgeführt wird, zeigt ein einfacher dir-Befehl (Get-ChildItem) die Registrierung ohne den neuen Schlüssel an. 

Wenn Sie dem dir-Befehl jedoch den UseTransaction-Parameter hinzufügen, wird der Befehl Teil der Transaktion und ruft die Elemente in der Transaktion ab, auch wenn sie den Daten noch nicht hinzugefügt wurden.






Siehe auch




Inhaltsverzeichnis