Startet eine Transaktion.

Syntax

Start-Transaction [-Independent] [-RollbackPreference {<Error> | <TerminatingError> | <Never>}] [-Timeout <int>] [-Bestätigung] [-WhatIf] [<CommonParameters>]

Beschreibung

Das Cmdlet "Start-Transaction" startet eine Transaktion. Dabei handelt es sich um eine Reihe von Befehlen, die als Einheit verwaltet werden. Eine Transaktion kann abgeschlossen ("ein Commit ausgeführt") werden oder vollkommen rückgängig gemacht ("zurückgesetzt") werden, sodass alle von der Transaktion geänderten Daten im ursprünglichen Zustand wiederhergestellt 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.

Standardmäßig wird automatisch ein Rollback von Transaktionen ausgeführt, wenn ein Befehl in der Transaktion einen Fehler generiert. Sie können dieses Verhalten jedoch mit dem RollbackPreference-Parameter ändern.

Die in einer Transaktion verwendeten Cmdlets müssen zum Unterstützen von Transaktionen geeignet sein. Cmdlets, die Transaktionen unterstützen, verfügen über einen UseTransaction-Parameter. Damit Transaktionen in einem Anbieter ausgeführt werden können, muss der Anbieter Transaktionen unterstützen. Der Windows PowerShell-Registry-Anbieter in Windows Vista und höheren Versionen von Windows unterstützt Transaktionen. Sie können auch mit der Microsoft.PowerShell.Commands.Management.TransactedString-Klasse Ausdrücke in Transaktionen unter beliebigen Windows-Versionen einschließen, die Windows PowerShell unterstützen. Andere Windows PowerShell-Anbieter können ebenfalls Transaktionen unterstützen.

Es kann jeweils nur eine Transaktion aktiv sein. Wenn Sie eine neue, unabhängige Transaktion starten, während eine Transaktion ausgeführt wird (weder abgeschlossen noch rückgängig gemacht), wird die neue Transaktion zur aktiven Transaktion, und Sie müssen ein Commit für die neue Transaktion ausführen bzw. sie zurücksetzen, bevor Sie Änderungen an der ursprünglichen Transaktion vornehmen.

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

Parameter

-Independent

Startet eine Transaktion, die von allen aktuellen Transaktionen unabhängig ist. Wenn Sie Start-Transaction verwenden, während eine andere Transaktion ausgeführt wird, wird der ausgeführten Transaktion standardmäßig ein neuer Abonnent hinzugefügt. Dieser Parameter hat nur Auswirkungen, wenn bereits eine Transaktion in der Sitzung ausgeführt wird.

Wenn Sie Start-Transaction verwenden, während eine Transaktion ausgeführt wird, wird das vorhandene Transaktionsobjekt standardmäßig wiederverwendet, und die Abonnentenanzahl wird inkrementiert. Dies entspricht weitgehend dem Hinzufügen der ursprünglichen Transaktion. Mit dem Befehl "Undo-Transaction" wird die gesamte Transaktion zurückgesetzt. Zum Abschließen der Transaktion müssen Sie den Befehl "Complete-Transaction" für jeden Abonnenten eingeben. Da die meisten Transaktionen, die gleichzeitig ausgeführt werden, miteinander in Zusammenhang stehen, ist der Standardwert in den meisten Fällen ausreichend.

Wenn Sie den Independent-Parameter verwenden, wird eine neue Transaktion erstellt, die ohne Auswirkungen auf die ursprüngliche Transaktion abgeschlossen oder rückgängig gemacht werden kann. Da jedoch nur jeweils eine Transaktion aktiv sein kann, müssen Sie die neue Transaktion abschließen oder zurücksetzen, bevor Sie mit der ursprünglichen Transaktion weiterarbeiten.

Erforderlich?

false

Position?

named

Standardwert

Reuse the original transaction object.

Pipelineeingaben akzeptieren?

false

Platzhalterzeichen akzeptieren?

false

-RollbackPreference <RollbackSeverity>

Gibt die Bedingungen an, unter denen eine Transaktion automatisch zurückgesetzt wird. Der Standardwert ist "Error".

Gültige Werte:

– Error: Die Transaktion wird automatisch zurückgesetzt, wenn ein Fehler mit oder ohne Abbruch auftritt. Der Standardwert ist "Error".

– Terminating error: Die Transaktion wird automatisch zurückgesetzt, wenn ein Fehler mit Abbruch auftritt.

– Never: Die Transaktion nie wird automatisch zurückgesetzt.

Erforderlich?

false

Position?

named

Standardwert

Error

Pipelineeingaben akzeptieren?

false

Platzhalterzeichen akzeptieren?

false

-Timeout <int>

Gibt die maximale Zeit in Minuten an, die die Transaktion aktiv ist. Wenn das Timeout abläuft, wird die Transaktion automatisch zurückgesetzt.

Standardmäßig gibt es kein Timeout für Transaktionen, die über die Befehlszeile gestartet wurden. Wenn Transaktionen von einem Skript gestartet werden, beträgt der Standardtimeoutwert 30 Minuten.

Erforderlich?

false

Position?

named

Standardwert

No timeout (infinite)

Pipelineeingaben akzeptieren?

false

Platzhalterzeichen akzeptieren?

false

-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

Eingaben können nicht über die Pipeline an dieses Cmdlet übergeben werden.

Ausgaben

None

Dieses Cmdlet generiert keine Ausgabe.

Beispiel 1

C:\PS>cd hkcu:\software

PS HKCU:\software> start-transaction

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

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

PS HKCU:\software> undo-transaction

Beschreibung
-----------
Mit diesen Befehlen wird eine Transaktion gestartet und dann zurückgesetzt. Da die Transaktion zurückgesetzt wird, werden keine Änderungen in der Registrierung vorgenommen.






Beispiel 2

C:\PS>cd hkcu:\software

PS HKCU:\software> start-transaction

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

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

PS HKCU:\software> complete-transaction

Beschreibung
-----------
Mit diesen Befehlen wird eine Transaktion gestartet und dann abgeschlossen. Es werden erst dann Änderungen an der Registrierung vorgenommen, wenn der Befehl "Complete-Transaction" verwendet wird.






Beispiel 3

C:\PS>cd HKCU:\software
PS HKCU:\software> start-transaction
PS HKCU:\software> new-item -path NoPath -name MyCompany -UseTransaction
PS HKCU:\software> new-item -path . -name MyCompany -UseTransaction

PS HKCU:\software> start-transaction -RollbackPreference never
PS HKCU:\software> new-item -path NoPath -name MyCompany -UseTransaction
PS HKCU:\software> new-item -path . -name MyCompany -UseTransaction

# Start-Transaction (-rollbackpreference error)

PS HKCU:\software> start-transaction
PS HKCU:\software> new-item -path NoPath -Name MyCompany -UseTransaction
New-Item : The registry key at the specified path does not exist.
At line:1 char:9
+ new-item <<<<  -path NoPath -Name MyCompany -UseTransaction

PS HKCU:\software> new-item -path . -name MyCompany -UseTransaction
New-Item : Cannot use transaction. The transaction has been rolled back or has timed out.
At line:1 char:9
+ new-item <<<<  -path . -name MyCompany -UseTransaction



# Start-Transaction (-rollbackpreference never)
PS HKCU:\software> start-transaction -RollbackPreference never
PS HKCU:\software> new-item -path NoPath -name MyCompany -UseTransaction
New-Item : The registry key at the specified path does not exist.
At line:1 char:9
+ new-item <<<<  -path NoPath -name MyCompany -UseTransaction


PS HKCU:\software> new-item -path . -name MyCompany -UseTransaction
  Hive: HKEY_CURRENT_USER\Software

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

PS HKCU:\Software> complete-transaction
# Succeeds

Beschreibung
-----------
In diesem Beispiel werden die Auswirkungen der Verwendung des RollbackPreference-Parameterwerts veranschaulicht.

Im ersten Befehlssatz verwendet der Befehl "Start-Transaction" den RollbackPreference-Parameter nicht. Daher wird der Standardwert ("Error") verwendet. Wenn ein Fehler in einem Transaktionsbefehl auftritt (der angegebene Pfad ist nicht vorhanden), wird die Transaktion automatisch zurückgesetzt.

Im zweiten Satz von Befehlen verwendet der Befehl "Start-Transaction" den RollbackPreference-Parameter mit dem Wert "Never". Wenn ein Fehler in einem Transaktionsbefehl auftritt, ist die Transaktion daher weiterhin aktiv und kann erfolgreich abgeschlossen werden.

Da die meisten Transaktionen ohne Fehler ausgeführt werden müssen, wird normalerweise der Standardwert des RollbackPreference-Parameters bevorzugt.






Beispiel 4

C:\PS>cd HKCU:\software

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

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

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

PS HKCU:\Software> Get-Transaction

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

Beschreibung
-----------
In diesem Beispiel werden die Auswirkungen veranschaulicht, wenn der Befehl "Start-Transaction" verwendet wird, während eine Transaktion ausgeführt wird. Dies entspricht weitgehend dem Hinzufügen der ausgeführten Transaktion.

Obwohl es sich hierbei um einen vereinfachten Befehl handelt, tritt dieses Szenario im Allgemeinen auf, wenn für die Transaktion ein Skript ausgeführt werden muss, das eine vollständige Transaktion enthält.

Der erste Befehl "Start-Transaction" startet die Transaktion. Der erste Befehl "New-Item" ist ein Teil der Transaktion. 

Der zweite Befehl "Start-Transaction" fügt der Transaktion einen neuen Abonnenten hinzu. Der Befehl "Get-Transaction" gibt nun eine Transaktion mit der Abonnentenanzahl 2 zurück. Der zweite Befehl "New-Item" ist Teil der gleichen Transaktion.

Änderungen an der Registrierung werden erst dann vorgenommen, wenn die gesamte Transaktion abgeschlossen wurde. Zum Abschließen der Transaktion müssen Sie zwei Complete-Transaction-Befehle eingeben, einen für jeden Abonnenten. Wenn Sie einen Rollback für die Transaktion ausführen würden, würde ein Rollback der gesamten Transaktion für beide Abonnenten ausgeführt.






Beispiel 5

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

PS HKCU:\software> start-transaction -independent
PS HKCU:\software> get-transaction
PS HKCU:\software> undo-transaction

PS HKCU:\software> new-itemproperty -path MyCompany -name MyKey -value 123 -UseTransaction
PS HKCU:\software> complete-transaction
PS HKCU:\software> dir my*

PS HKCU:\Software> get-transaction

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

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

MyKey
-----
123

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

   Hive: HKEY_CURRENT_USER\Software

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

Beschreibung
-----------
In diesem Beispiel werden die Auswirkungen veranschaulicht, wenn mit dem Independent-Parameter von Start-Transaction eine Transaktion gestartet wird, während eine andere Transaktion ausgeführt wird. In diesem Fall wird die neue Transaktion zurückgesetzt, ohne dass dies Auswirkungen auf die ursprüngliche Transaktion hat.

Obwohl die Transaktionen logisch unabhängig sind, da jeweils nur eine Transaktion aktiv sein kann, müssen Sie die neueste Transaktion zurücksetzen oder einen Commit ausführen, bevor Sie weiter mit der ursprünglichen Transaktion arbeiten können.

Mit dem ersten Satz von Befehlen wird eine Transaktion gestartet. Der Befehl "New-Item" ist ein Teil der ersten Transaktion.

Im zweiten Satz von Befehlen verwendet der Befehl "Start-Transaction" den Independent-Parameter. Der folgende Befehl "Get-Transaction" zeigt das Transaktionsobjekt für die aktive Transaktion an (die neueste Transaktion). Die Abonnentenanzahl beträgt 1. Dies gibt an, dass die Transaktionen nicht verknüpft sind. 

Wenn die aktive Transaktion mit dem Befehl "Undo-Transaction" zurückgesetzt wird, wird die ursprüngliche Transaktion wieder aktiv.

Der Befehl "New-ItemProperty", der Teil der ursprünglichen Transaktion ist, wird ohne Fehler abgeschlossen, und die ursprüngliche Transaktion kann mit dem Befehl "Complete-Transaction" abgeschlossen werden. Die Registrierung wird daraufhin geändert.






Beispiel 6

C:\PS>cd hkcu:\software

PS HKCU:\software> start-transaction
PS HKCU:\software> new-item MyCompany1 -UseTransaction
PS HKCU:\software> new-item MyCompany2 
PS HKCU:\software> new-item MyCompany3 -UseTransaction

PS HKCU:\software> dir my*

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

PS HKCU:\Software> dir my*

   Hive: HKEY_CURRENT_USER\Software

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

PS HKCU:\Software> complete-transaction

PS HKCU:\Software> dir my*

   Hive: HKEY_CURRENT_USER\Software

SKC  VC Name                           Property
---  -- ----                           --------
  0   0 MyCompany1                     {}
  0   0 MyCompany2                     {}
  0   0 MyCompany3                     {}

Beschreibung
-----------
In diesem Beispiel wird veranschaulicht, dass Befehle, die gesendet werden, während eine Transaktion ausgeführt wird, in der Transaktion eingeschlossen oder nicht eingeschlossen werden können. Nur Befehle, die den UseTransaction-Parameter verwenden, sind Teil der Transaktion.

Der erste und der dritte New-Item-Befehl verwenden den UseTransaction-Parameter. Diese Befehle sind Teil der Transaktion. Da der zweite New-Item-Befehl den UseTransaction-Parameter nicht verwendet, ist er kein Teil der Transaktion.

Der erste Befehl "dir" zeigt die Auswirkungen an. Der zweite Befehl "New-Item" wird sofort abgeschlossen, der erste und der dritte New-Item-Befehl werden jedoch erst wirksam, nachdem ein Commit für die Transaktion ausgeführt wurde.

Der Befehl "Complete-Transaction" führt einen Commit für die Transaktion aus. Der zweite dir-Befehl gibt daher an, dass der Registrierung alle neuen Elemente hinzugefügt werden.






Beispiel 7

C:\PS>start-transaction -timeout 2

# Wait two minutes...

C:\PS> get-transaction

C:\PS> new-item HKCU:\Software\MyCompany -UseTransaction

C:\PS> start-transaction -timeout 2

# Wait two minutes...

C:\PS>> get-transaction

RollbackPreference   SubscriberCount   Status
------------------   ---------------   -----------
Error                1                 RolledBack 


C:\PS> new-item HKCU:\Software\MyCompany -UseTransaction
New-Item : Cannot use transaction. The transaction has been rolled back or has timed out.
At line:1 char:9
+ new-item <<<<  MyCompany -UseTransaction

Beschreibung
-----------
Dieser Befehl startet mithilfe des Timeout-Parameters von Start-Transaction eine Transaktion, die innerhalb von zwei Minuten abgeschlossen werden muss. Wenn die Transaktion bei Ablauf des Timeouts nicht abgeschlossen wurde, wird sie automatisch zurückgesetzt.

Wenn das Timeout abläuft, werden Sie nicht benachrichtigt. Die Status-Eigenschaft des Transaktionsobjekts wird jedoch auf "RolledBack" festgelegt, und bei Befehlen, die den UseTransaction-Parameter verwenden, tritt ein Fehler auf.






Siehe auch




Inhaltsverzeichnis