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 $TransactedStringhinzuzufü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 " $TransactedStringHello" 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.

Type:ScriptBlock
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters: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.

Type:SwitchParameter
Aliases:usetx
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters: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 beliebigen Use-Transaction Befehl effektiv zu machen.