Use-Transaction
Fügt den Skriptblock der aktiven Transaktion hinzu.
Syntax
Use-Transaction
[-TransactedScript] <ScriptBlock>
[-UseTransaction]
[<CommonParameters>]
Beschreibung
Das Use-Transaction
Cmdlet fügt einer aktiven Transaktion einen Skriptblock hinzu. Auf diese Weise können Sie transaktionente Skripts mithilfe von transaktionsfähigen Microsoft .NET Framework-Objekten ausführen. Der Skriptblock kann nur transaktionsfähige .NET Framework-Objekte enthalten, z. B. Instanzen der Microsoft.PowerShell.Commands.Management.TransactedString-Klasse .
Der UseTransaction-Parameter , der für die meisten Cmdlets optional ist, ist erforderlich, wenn Sie dieses Cmdlet verwenden.
Use-Transaction
ist einer der Cmdlets, die das Transaktionsfeature in Windows PowerShell unterstützen. Weitere Informationen finden Sie unter about_Transactions.
Beispiele
Beispiel 1: Skript mithilfe eines transaktionsfähigen Objekts
Start-Transaction
$transactedString = New-Object Microsoft.PowerShell.Commands.Management.TransactedString
$transactedString.Append("Hello")
Use-Transaction -TransactedScript { $transactedString.Append(", World") } -UseTransaction
$transactedString.ToString()
Hello
Use-Transaction -TransactedScript { $transactedString.ToString() } -UseTransaction
Hello, World
Complete-Transaction
$transactedString.ToString()
Hello, World
In diesem Beispiel wird gezeigt, wie Sie ein Skript für ein transaktionsfähiges .NET Framework-Objekt verwenden Use-Transaction
. In diesem Fall ist das Objekt ein TransactedString-Objekt .
Der erste Befehl verwendet das Start-Transaction
Cmdlet, um eine Transaktion zu starten.
Der zweite Befehl verwendet den Befehl "New-Object", um ein TransactedString-Objekt zu erstellen. Das Objekt wird in der $TransactedString
Variablen gespeichert.
Die dritten und vierten Befehle verwenden beide die Append-Methode des TransactedString-Objekts , um text zum Wert von $TransactedString
hinzuzufügen. Ein Befehl ist Teil der Transaktion. Der andere Befehl ist nicht.
Der dritte Befehl verwendet die Append-Methode der Transacted-Zeichenfolge, um Hello zum Wert von $TransactedString
. Da der Befehl nicht Teil der Transaktion ist, wird die Änderung sofort übernommen.
Der vierte Befehl verwendet Use-Transaction
, um der Zeichenfolge in der Transaktion Text hinzuzufügen. Der Befehl verwendet die Append-Methode , um dem Wert von $TransactedString
", World" hinzuzufügen. Der Befehl ist in geschweifte Klammern ({}
) eingeschlossen, um ihn zu einem Skriptblock zu machen. Der UseTransaction-Parameter ist in diesem Befehl erforderlich.
Die fünften und sechsten Befehle verwenden die ToString-Methode des TransactedString-Objekts , um den Wert der TransactedString als Zeichenfolge anzuzeigen. Auch hier ist ein Befehl Teil der Transaktion. Die andere Transaktion ist nicht.
Der fünfte Befehl verwendet die ToString-Methode , um den aktuellen Wert der $TransactedString Variablen anzuzeigen. Da er kein Teil der Transaktion ist, wird nur der aktuelle Status der Zeichenfolge angezeigt.
Der sechste Befehl verwendet Use-Transaction
, um denselben Befehl in der Transaktion auszuführen. Da der Befehl Teil der Transaktion ist, wird der aktuelle Wert der Zeichenfolge in der Transaktion ähnlich wie eine Vorschau der Transaktion angezeigt.
Der siebte Befehl verwendet das Complete-Transaction
Cmdlet, um die Transaktion zu übernehmen.
Der letzte Befehl verwendet die ToString-Methode , um den resultierenden Wert der Variablen als Zeichenfolge anzuzeigen.
Beispiel 2: Zurücksetzen einer Transaktion
Start-Transaction
$transactedString = New-Object Microsoft.PowerShell.Commands.Management.TransactedString
$transactedString.Append("Hello")
Use-Transaction -TransactedScript { $transactedString.Append(", World") } -UseTransaction
Undo-Transaction
$transactedString.ToString()
Hello
Dieses Beispiel zeigt die Auswirkung des Rollbacks einer Transaktion, die Befehle enthält Use-Transaction
. Wie alle Befehle in einer Transaktion werden die Transaktionsänderungen beim Zurücksetzen der Transaktion verworfen, und die Daten sind unverändert.
Der erste Befehl verwendet Start-Transaction
, um eine Transaktion zu starten.
Der zweite Befehl verwendet New-Object
zum Erstellen eines TransactedString-Objekts . Das Objekt wird in der $TransactedString
Variablen gespeichert.
Der dritte Befehl, der nicht Teil der Transaktion ist, verwendet die Append-Methode , um dem Wert " $TransactedString
Hello" hinzuzufügen.
Der vierte Befehl wird Use-Transaction
verwendet, um einen anderen Befehl auszuführen, der die Append-Methode in der Transaktion verwendet. Der Befehl verwendet die Append-Methode , um dem Wert von $TransactedString
", World" hinzuzufügen.
Der fünfte Befehl setzt die Transaktion mit dem Cmdlet %%amp;quot;Undo-Transaction%%amp;quot; zurück. Daher werden alle befehle, die in der Transaktion ausgeführt werden, umgekehrt.
Der letzte Befehl verwendet die ToString-Methode , um den resultierenden Wert $TransactedString
als Zeichenfolge anzuzeigen. Die Ergebnisse zeigen, dass nur die Änderungen, die außerhalb der Transaktion vorgenommen wurden, auf das Objekt angewendet wurden.
Parameter
-TransactedScript
Gibt den Skriptblock an, der in der Transaktion ausgeführt wird. Geben Sie einen beliebigen gültigen Skriptblock ein, der in geschweifte Klammern ({}
) eingeschlossen ist. Dieser Parameter ist erforderlich.
Typ: | ScriptBlock |
Position: | 0 |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-UseTransaction
Schließt den Befehl in die aktive Transaktion ein. Dieser Parameter ist nur gültig, wenn gerade eine Transaktion ausgeführt wird. Weitere Informationen finden Sie unter about_transactions.
Typ: | SwitchParameter |
Aliase: | usetx |
Position: | Named |
Standardwert: | False |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
Eingaben
None
Eingaben können nicht an dieses Cmdlet weitergereicht werden.
Ausgaben
PSObject
Dieses Cmdlet gibt das Ergebnis der Transaktion zurück.
Hinweise
- Der UseTransaction-Parameter enthält den Befehl in der aktiven Transaktion. Da das
Use-Transaction
Cmdlet immer in Transaktionen verwendet wird, ist dieser Parameter erforderlich, um einen beliebigenUse-Transaction
Befehl effektiv zu machen.