Complete-Transaction
Führt einen Commit für die aktive Transaktion durch.
Syntax
Default (Standard)
Complete-Transaction
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Beschreibung
Mit dem Cmdlet Complete-Transaction wird ein Commit für eine aktive Transaktion ausgeführt. Wenn Sie eine Transaktion übernehmen, 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 eines Commits für die Transaktion für jeden Start-Transaction Befehl einen Complete-Transaction-Befehl eingeben.
Das Cmdlet Complete-Transaction gehört zu einer Reihe von Cmdlets, die das Transaktionsfeature in Windows PowerShell unterstützen. Weitere Informationen finden Sie unter about_Transactions.
Beispiele
Beispiel 1: Commit einer Transaktion
PS C:\> 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 {}
In diesem Beispiel wird gezeigt, was geschieht, wenn Sie das Cmdlet Complete-Transaction verwenden, um einen Commit für eine Transaktion auszuführen.
Mit dem Befehl Start-Transaction wird die Transaktion gestartet. Der Befehl New-Item verwendet den parameter UseTransaction, um den Befehl in die Transaktion einzuschließen.
Der erste Befehl dir (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, wodurch die Registrierungsänderung wirksam wird. Als Ergebnis zeigt der zweite dir-Befehl an, dass die Registrierung geändert wurde.
Beispiel 2: Commit einer Transaktion mit mehr als einem Abonnenten
PS C:\> 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}
In diesem Beispiel wird gezeigt, wie Sie Complete-Transaction verwenden, um einen Commit für eine Transaktion auszuführen, die über mehr als einen Abonnenten verfügt.
Um einen Commit für eine Transaktion mit mehreren Abonnenten auszuführen, müssen Sie für jeden Start-Transaction-Befehl einen Complete-Transaction-Befehl eingeben. Die Daten werden nur geändert, wenn der letzte Complete-Transaction-Befehl gesendet wird.
Zu Demonstrationszwecken zeigt dieses Beispiel eine Reihe von Befehlen, die an der Befehlszeile eingegeben wurden. In der Praxis werden Transaktionen wahrscheinlich 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 wird die Transaktion mit einem Start-Transaction-Befehl gestartet. Ein New-Item-Befehl mit dem UseTransaction-Parameter fügt dem Softwareschlüssel den Schlüssel MyCompany hinzu. Obwohl das Cmdlet New-Item ein Schlüsselobjekt zurückgibt, wurden die Daten in der Registrierung noch nicht geändert.
Ein zweiter Start-Transaction-Befehl fügt der vorhandenen Transaktion einen zweiten Abonnenten hinzu. Das Cmdlet Get-Transaction bestätigt, dass die Abonnentenanzahl 2 beträgt. Ein New-ItemProperty-Befehl mit dem parameter UseTransaction fügt dem neuen MyCompany-Schlüssel einen Registrierungseintrag hinzu. Auch hier gibt der Befehl einen Wert zurück, aber die Registrierung wird nicht geändert.
Der erste Complete-Transaction-Befehl reduziert die Anzahl der Abonnenten um 1. Dies wird durch einen Get-Transaction-Befehl bestätigt. Es werden jedoch keine Daten geändert, was durch den Befehl dir m* (Get-ChildItem) belegt wird.
Mit dem zweiten Complete-Transaction-Befehl wird ein Commit für die gesamte Transaktion ausgeführt und die Daten in der Registrierung geändert. Dies wird durch einen zweiten dir m*-Befehl bestätigt, der die Änderungen anzeigt.
Beispiel 3: Durchführen einer Transaktion, die keine Daten ändert
PS C:\> 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
Dieses Beispiel zeigt den Wert der Verwendung von Get-*-Befehlen und anderen Befehlen, die keine Daten ändern, in einer Transaktion. Wenn ein Get-*-Befehl in einer Transaktion verwendet wird, werden die Objekte abgerufen, die Teil der Transaktion sind. Auf diese Weise können Sie eine Vorschau der Änderungen in der Transaktion anzeigen, bevor die Änderungen zugesichert werden.
In diesem Beispiel wird eine Transaktion gestartet. Ein New-Item-Befehl mit dem parameter UseTransaction 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 Befehl dir jedoch den UseTransaction-Parameter hinzufügen, wird der Befehl Teil der Transaktion, und die Elemente in der Transaktion werden auch dann abgerufen, wenn sie den Daten noch nicht hinzugefügt wurden.
Parameter
-Confirm
Fordert Sie zur Bestätigung auf, bevor Sie das Cmdlet ausführen.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | False |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
| Aliase: | vgl |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-WhatIf
Zeigt, was passiert, wenn das Cmdlet ausgeführt wird. Das Cmdlet wird nicht ausgeführt.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | False |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
| Aliase: | Wi |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
CommonParameters
Dieses Cmdlet unterstützt die allgemeinen Parameter -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction und -WarningVariable. Weitere Informationen findest du unter about_CommonParameters.
Eingaben
None
Objekte können nicht an dieses Cmdlet weitergeleitet werden.
Ausgaben
None
Dieses Cmdlet generiert keine Ausgabe.
Hinweise
Sie können kein Rollback für eine Transaktion ausführen, die zugesichert wurde, oder ein Commit für eine Transaktion ausführen, die zurückgesetzt wurde.
Sie können keine andere Transaktion als die aktive Transaktion zurücksetzen. Um eine andere Transaktion zurückzuweisen, müssen Sie zuerst einen Commit ausführen oder einen Rollback für die aktive Transaktion ausführen.
Wenn ein Teil einer Transaktion nicht zugesichert werden kann, z. B. wenn ein Befehl in der Transaktion zu einem Fehler führt, wird die gesamte Transaktion zurückgesetzt.