Beschreibt die Verwaltung von Transaktionsvorgängen in Windows (about_transactions)

   
# THEMA
about_Transactions

# KURZBESCHREIBUNG
Beschreibt die Verwaltung von Transaktionsvorgängen in Windows
PowerShell.

# DETAILBESCHREIBUNG
Transaktionen werden in Windows PowerShell ab Windows PowerShell
2.0 unterstützt. Mit diesem Feature können Sie Transaktionen
starten, die Befehle angeben, die Teil der Transaktion sind,
sowie für eine Transaktion einen Commit ausführen und diese
zurücksetzen.

INFORMATIONEN ZU TRANSAKTIONEN

In Windows PowerShell werden als Transaktion Sätze von einem
oder mehreren Befehlen bezeichnet, die als logische Einheit
verwaltet werden. Eine Transaktion kann abgeschlossen werden
(ein "Commit" wird ausgeführt), um die von der Transaktion
betroffenen Daten zu ändern. Transaktionen können auch
vollständig rückgängig gemacht werden ("zurückgesetzt"), sodass
die betroffenen Daten von der Transaktion nicht geändert 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.

Transaktionen werden in der Datenverarbeitung häufig verwendet,
besonders für Datenbankvorgänge und Finanztransaktionen.
Transaktionen werden am häufigsten verwendet, wenn eine Gruppe
von Befehlen im schlimmsten Fall nicht einfach nicht ausgeführt
wird, sondern einige Befehle erfolgreich ausgeführt werden,
während andere fehlschlagen und das System dadurch in einem
beschädigten, falschen oder nicht interpretierbaren Status
hinterlassen wird, der nur mit Schwierigkeiten repariert werden
kann.

TRANSACTION-CMDLETS

Windows PowerShell enthält verschiedene Cmdlets für die
Verwaltung von Transaktionen.

Cmdlet Beschreibung
-------------- ---------------------------------
Start-Transaction Startet eine neue Transaktion.

Use-Transaction Fügt der Transaktion einen
Befehl oder einen Ausdruck hinzu.
Für den Befehl müssen für
Transaktionen aktivierte Objekte
verwendet werden.

Undo-Transaction Setzt die Transaktion zurück,
sodass keine Daten von der
Transaktion geändert werden.

Complete-Transaction Führt einen Commit für die
Transaktion aus. Die von der
Transaktion betroffenen Daten
werden geändert.

Get-Transaction Ruft Informationen zur aktiven
Transaktion ab.

Eine Liste von Transaction-Cmdlets erhalten Sie mit folgendem
Befehl:

get-command *transaction

Ausführliche Informationen zu diesen Cmdlets erhalten Sie mit
folgendem Befehl:

get-help <Cmdlet-Name> -detailed

Beispiel:

get-help use-transaction -detailed

FÜR TRANSAKTIONEN AKTIVIERTE ELEMENTE

Um an einer Transaktion teilnehmen zu können, müssen das Cmdlet
und der Anbieter Transaktionen unterstützen. Dieses Feature ist
in die von der Transaktion betroffenen Objekte integriert.

Der Windows PowerShell-Registrierungsanbieter unterstützt
Transaktionen unter Windows Vista. Das TransactedString-Objekt
(Microsoft.PowerShell.Commands.Management.TransactedString) kann
unter jedem Betriebssystem verwendet werden, in dem Windows
PowerShell ausgeführt wird.

Andere Windows PowerShell-Anbieter können ebenfalls Transaktionen
unterstützen. Wenn Sie die Windows PowerShell-Anbieter in der Sitzung
suchen möchten, die Transaktionen unterstützen, verwenden Sie den
folgenden Befehl, um in der Capabilities-Eigenschaft der Anbieter den
Wert "Transactions" zu suchen:

get-psprovider | where {$_.Capabilities -like "*transactions*"}

Weitere Informationen zu einem Anbieter finden Sie in der Hilfe
für den betreffenden Anbieter.
Wenn Sie Hilfe zu einem Anbieter abrufen möchten, geben Sie
Folgendes ein:

get-help <Anbietername>

Hilfeinformationen zum Registrierungsanbieter können Sie z. B.
mit folgendem Befehl abrufen:

get-help registry

DER USETRANSACTION-PARAMETER

Cmdlets, die Transaktionen unterstützen, verfügen über einen
UseTransaction-Parameter. Mit diesem Parameter wird der Befehl
in der aktiven Transaktion eingeschlossen. Sie können den
vollständigen Namen des Parameters oder aber dessen Alias, "usetx",
verwenden.

Der Parameter kann nur verwendet werden, wenn die Sitzung eine
aktive Transaktion enthält. Wenn Sie einen Befehl mit dem
UseTransaction-Parameter eingeben und keine aktive Transaktion
vorhanden ist, wird für den Befehl ein Fehler ausgegeben.

Wenn Sie Cmdlets mit dem UseTransaction-Parameter suchen
möchten, geben Sie Folgendes ein:

get-help * -parameter UseTransaction

Alle Kern-Cmdlets von Windows PowerShell, die mit Windows
PowerShell-Anbietern verwendet werden können, unterstützen
Transaktionen. Daher können Sie Transaktionen über die
Anbieter-Cmdlets verwalten.

Weitere Informationen zur Windows PowerShell-Anbietern finden
Sie unter "about_Providers".

DAS TRANSACTION-OBJEKT

Transaktionen werden in Windows PowerShell durch ein
Transaktionsobjekt, System.Management.Automation.Transaction,
dargestellt.

Das Objekt verfügt über die folgenden Eigenschaften:

RollbackPreference:
Enthält die Einstellungen für die Zurücksetzung der
aktuellen Transaktion. Die Einstellung für die
Zurücksetzung können Sie festlegen, wenn Sie die
Transaktion mit Start-Transaction starten.

Die Einstellung für die Zurücksetzung bestimmt die
Bedingungen, unter denen die Transaktion automatisch
zurückgesetzt wird. Gültig sind die Werte "Error",
"TerminatingError" und "Never". Der Standardwert ist "Error".

Status:
Enthält den aktuellen Status der Transaktion. Gültig sind
die Werte "Active", "Committed" und "RolledBack".

SubscriberCount:
Enthält die Anzahl der Abonnenten für die Transaktion. Einer
Transaktion wird ein Abonnent hinzugefügt, wenn Sie eine
Transaktion starten, während eine andere Transaktion
ausgeführt wird. Die Abonnentenanzahl wird gesenkt, wenn ein
Abonnent einen Commit für die Transaktion ausführt.

AKTIVE TRANSAKTIONEN

In Windows PowerShell ist jeweils nur eine Transaktion aktiv,
und Sie können nur die aktive Transaktion verwalten. In einer
einzelnen Sitzung können mehrere Transaktionen gleichzeitig
ausgeführt werden, jedoch ist nur die zuletzt gestartete
Transaktion aktiv.

Daher können Sie beim Verwenden der Transaction-Cmdlets keine
bestimmte Transaktion angeben. Befehle werden immer auf die
aktive Transaktion angewendet.

Im Verhalten des Cmdlet "Get-Transaction" wird dies am
offensichtlichsten. Wenn Sie den Befehl "Get-Transaction"
eingeben, ruft Get-Transaction stets nur ein Transaktionsobjekt
ab. Dieses Objekt stellt die aktive Transaktion dar.

Wenn Sie eine andere Transaktion verwalten möchten, müssen Sie
zuerst die aktive Transaktion beenden, indem Sie für diese
einen Commit ausführen oder sie zurücksetzen. In diesem Fall
wird die vorherige Transaktion automatisch aktiv. Transaktionen
werden in der umgekehrten Reihenfolge aktiv, in der sie
gestartet wurden, sodass immer die zuletzt gestartete
Transaktion aktiv ist.

ABONNENTEN AND UNABHÄNGIGE TRANSAKTIONEN

Wenn Sie eine Transaktion starten, während eine andere
Transaktion ausgeführt wird, wird von Windows PowerShell
standardmäßig keine neue Transaktion gestartet. Stattdessen
wird der aktuellen Transaktion ein "Abonnent" hinzugefügt.

Wenn eine Transaktion mehrere Abonnenten umfasst, wird mit dem
einzelnen Befehl "Undo-Transaction" zu beliebigem Zeitpunkt die
gesamte Transaktion für alle Abonnenten zurückgesetzt. Um
jedoch einen Commit für die Transaktion auszuführen, müssen Sie
den Befehl "Complete-Transaction" für jeden Abonnenten eingeben.

Wenn Sie die Anzahl von Abonnenten für eine Transaktion suchen
möchten, überprüfen Sie die SubscriberCount-Eigenschaft des
Transaktionsobjekts. Im folgenden Befehl wird z. B. das Cmdlet
"Get-Transaction" verwendet, um den Wert für die SubscriberCount
-Eigenschaft der aktiven Transaktion abzurufen:

(Get-Transaction).SubscriberCount

Im Standardverhalten wird ein Abonnent hinzugefügt, da sich die
meisten Transaktionen, die gestartet werden, während eine
andere Transaktion ausgeführt wird, auf die ursprüngliche
Transaktion beziehen. In einem typischen Modell wird mit einem
Skript, das eine Transaktion enthält, ein Hilfsskript
aufgerufen, das eine eigene Transaktion enthält. Da die
Transaktionen aufeinander bezogen sind, müssen sie
zurückgesetzt werden, oder muss ein einzelner Commit für alle
ausgeführt werden.

Mit dem Independent-Parameter des Cmdlet "Start-Transaction"
können Sie jedoch eine Transaktion starten, die von der
aktuellen Transaktion unabhängig ist.

Wenn Sie eine unabhängige Transaktion starten, wird mit
Start-Transaction ein neues Transaktionsobjekt erstellt, und
die neue Transaktion wird aktiv. Für die unabhängige
Transaktion kann ein Commit ausgeführt werden, oder sie kann
zurückgesetzt werden, ohne dass die ursprüngliche Transaktion
beeinflusst wird.

Wenn die unabhängige Transaktion beendet wird (durch Commit
oder Zurücksetzen), wird die ursprüngliche Transaktion wieder aktiv.

ÄNDERN VON DATEN

Wenn Sie mit Transaktionen Daten ändern, werden die von der
Transaktion betroffenen Daten erst geändert, wenn Sie für die
Transaktion einen Commit ausgeführt haben.
Dieselben Daten können jedoch von Befehlen geändert werden, die
nicht Teil der Transaktion sind.

Diesen Umstand sollten Sie nicht vergessen, wenn Sie mit
Transaktionen freigegebene Daten verwalten. In der Regel
verfügen Datenbanken über Mechanismen, mit denen die Daten
gesperrt werden, während Sie an diesen arbeiten. Damit wird
verhindert, dass diese von anderen Benutzern und anderen
Befehlen, Skripts und Funktionen geändert werden.

Diese Sperre bildet jedoch ein Feature der Datenbank. Mit den
Transaktionen steht sie in keinem Bezug. Wenn Sie mit einem für
Transaktionen aktivierten Dateisystem oder einem anderem
Datenspeicher arbeiten, können die Daten geändert werden,
während die Transaktion ausgeführt wird.

BEISPIELE
In den Beispielen in diesem Abschnitt wird der Windows PowerShell-
Registrierungsanbieter verwendet, und es wird davon ausgegangen, dass
Sie mit diesem vertraut sind. Wenn Sie Informationen zum
Registrierungsanbieter benötigen, geben Sie "get-help registry" ein.

BEISPIEL 1: AUSFÜHREN EINES COMMITS FÜR EINE TRANSAKTION

Das Cmdlet "Start-Transaction" ermöglicht das Erstellen einer
Transaktion. Mit dem folgenden Befehl starten Sie eine
Transaktion mit den Standardeinstellungen.

start-transaction

Wenn Sie Befehle in die Transaktion einschließen möchten,
verwenden Sie den UseTransaction-Parameter des Cmdlet.
Standardmäßig werden Befehle nicht in die Transaktion eingeschlossen.

Zum Beispiel ist der folgende Befehl, mit dem der aktuellen
Speicherort im Schlüssel "Software" des Laufwerks "HKCU:"
festlegt wird, nicht in die Transaktion eingeschlossen.

cd hkcu:\Software

Im folgenden Befehl zum Erstellen des Schlüssels "MyCompany" wird
mit dem UseTransaction-Parameter des Cmdlet "New-Item" der Befehl
in die aktive Transaktion eingeschlossen.

new-item MyCompany -UseTransaction

Mit dem Befehl wird ein Objekt zurückgegeben, das den neuen
Schlüssel darstellt, doch da der Befehl Teil der Transaktion ist,
wird die Registrierung noch nicht geändert.

Struktur: HKEY_CURRENT_USER\Software

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

Wenn Sie für die Transaktion einen Commit ausführen möchten,
verwenden Sie das Cmdlet "Complete-Transaction".
Da dieses sich stets auf die aktive Transaktion auswirkt, können
Sie die Transaktion nicht angeben.

complete-transaction

Als Ergebnis wird der Schlüssel "MyCompany" der Registrierung
hinzugefügt.

dir m*

Struktur: HKEY_CURRENT_USER\software

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

BEISPIEL 2: ZURÜCKSETZEN EINER TRANSAKTION

Das Cmdlet "Start-Transaction" ermöglicht das Erstellen einer
Transaktion. Mit dem folgenden Befehl starten Sie eine
Transaktion mit den Standardeinstellungen.

start-transaction

Im folgenden Befehl zum Erstellen des Schlüssels "MyOtherCompany"
wird mit dem UseTransaction-Parameter des Cmdlet "New-Item" der
Befehl in die aktive Transaktion eingeschlossen.

new-item MyOtherCompany -UseTransaction

Mit dem Befehl wird ein Objekt zurückgegeben, das den neuen
Schlüssel darstellt, doch da der Befehl Teil der Transaktion ist,
wird die Registrierung noch nicht geändert.

Struktur: HKEY_CURRENT_USER\Software

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

Zum Zurücksetzen der Transaktion verwenden Sie das Cmdlet
"Undo-Transaction".
Da dieses sich stets auf die aktive Transaktion auswirkt, geben
Sie die Transaktion nicht an.

Undo-transaction

Im Ergebnis wird der Schlüssel "MyOtherCompany" der Registrierung
nicht hinzugefügt.

dir m*

Struktur: HKEY_CURRENT_USER\software

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

BEISPIEL 3: ANZEIGEN EINER TRANSAKTION IN DER VORSCHAU

In der Regel werden durch die in Transaktionen verwendeten
Befehle Daten geändert. Befehle zum Abrufen von Daten sind in
einer Transaktion jedoch auch nützlich, da die Daten so innerhalb
der Transaktion abgerufen werden. Dies ermöglicht eine Vorschau
der Änderungen, die bei einem Commit für die Transaktion
verursacht werden.

Im folgenden Beispiel wird gezeigt, wie mit dem Befehl
"Get-ChildItem" (Alias: "dir") die Änderungen in einer
Transaktion als Vorschau angezeigt werden.

Mit dem folgenden Befehl wird eine Transaktion gestartet.

start-transaction

Im folgenden Befehl wird der Registrierungsschlüssel "MyKey" mit
dem Cmdlet "New-ItemProperty" dem Schlüssel "MyCompany"
hinzugefügt. In dem Befehl wird mit dem UseTransaction-Parameter
der Befehl in die Transaktion eingeschlossen.

new-itemproperty -path MyCompany -Name MyKey -value 123
-UseTransaction

Der Befehl gibt ein Objekt zurück, das den neuen Registrierungsein
trag darstellt, jedoch wird der Registrierungseintrag nicht geändert.

MyKey
-----
123

Wenn Sie die derzeit in der Registrierung vorhandenen Elemente
abrufen möchten, verwenden Sie den Befehl "Get-ChildItem" ("dir")
ohne den UseTransaction-Parameter. Mit dem folgenden Befehl
werden Elemente abgerufen, die mit "M" beginnen.

dir m*

Das Ergebnis zeigt, dass dem Schlüssel MyCompany noch keine
Einträge hinzugefügt wurden.

Struktur: HKEY_CURRENT_USER\Software

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

Wenn Sie Auswirkungen eines Commits für die Transaktion in der
Vorschau anzeigen möchten, geben Sie den Befehl "Get-ChildItem"
("dir") mit dem UseTransaction-Parameter ein. Dieser Befehl
bietet innerhalb der Transaktion eine Ansicht der Daten.

dir m* -useTransaction

Das Ergebnis zeigt, dass bei ausgeführtem Commit für die
Transaktion der Schlüssel "MyCompany" dem Schlüssel "MyKey"
hinzugefügt wird.

Struktur: HKEY_CURRENT_USER\Software

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

BEISPIEL 4: KOMBINIEREN VON BEFEHLEN, DIE TEIL BZW. NICHT TEIL VON
TRANSAKTIONEN SIND

Sie können während einer Transaktion Befehle eingeben, die nicht
Teil einer Transaktion sind. Die Befehle, die nicht Teil von
Transaktionen sind, wirken sich sofort auf die Daten, auf die
Transaktion jedoch überhaupt nicht aus.

Im folgenden Befehl wird eine Transaktion im Registrierungsschlüss
el "HKCU:\Software" gestartet.

start-transaction

In den nächsten drei Befehlen werden mit dem Cmdlet "New-Item"
Schlüssel zur Registrierung hinzugefügt. Im ersten und dritten
Befehl wird der UseTransaction-Parameter verwendet, um Befehle in
die Transaktion einzuschließen. Im zweiten Befehl ist der
Parameter ausgelassen. Da der zweite Befehl nicht Teil der
Transaktion enthalten ist, wird er sofort wirksam.

new-item MyCompany1 -UseTransaction

new-item MyCompany2

new-item MyCompany3 -UseTransaction

Wenn Sie den aktuellen Status der Registrierung anzeigen möchten,
verwenden Sie den Befehl "Get-ChildItem" ("dir") ohne den
UseTransaction-Parameter. Mit diesem Befehl werden Elemente
abgerufen, die mit "M" beginnen.

dir m*

Das Ergebnis zeigt, dass der Schlüssel "MyCompany2" der
Registrierung hinzugefügt wird, aber die Schlüssel "MyCompany1"
und "MyCompany3", die Teil der Transaktion sind, nicht
hinzugefügt werden.

Struktur: HKEY_CURRENT_USER\Software

SKC VC Name Property
--- -- ---- --------
83 1 Microsoft {(default)}
0 0 MyCompany2 {}

Der folgende Befehl führt einen Commit für die Transaktion aus.

complete-transaction

Nun werden die Schlüssel, die als Teil der Transaktion
hinzugefügt wurden, in der Registrierung angezeigt.

dir m*

Struktur: HKEY_CURRENT_USER\Software

SKC VC Name Property
--- -- ---- --------
83 1 Microsoft {(default)}
0 0 MyCompany1 {}
0 0 MyCompany2 {}
0 0 MyCompany3 {}

BEISPIEL 5: VERWENDEN DER AUTOMATISCHEN ZURÜCKSETZUNG

Wenn ein Befehl in einer Transaktion einen Fehler beliebiger Art
generiert, wird die Transaktion automatisch zurückgesetzt.

Dieses Standardverhalten wurde für Skripts entworfen, mit denen
Transaktionen ausgeführt werden. Skripts wurden in der Regel
umfangreich getestet und enthalten eine Fehlerbehandlungslogik,
daher werden keine Fehler erwartet, und die Transaktion sollte
normal beendet werden.

Im ersten Befehl wird eine Transaktion im Registrierungsschlüssel
"HKCU:\Software" gestartet.

start-transaction

Im folgenden Befehl wird der Registrierungsschlüssel "MyCompany"
mit dem Cmdlet "New-Item" der Registrierung hinzugefügt. In dem
Befehl wird mit dem UseTransaction-Parameter (Alias: "usetx") der
Befehl in die Transaktion eingeschlossen.

New-Item MyCompany -UseTX

Da der Schlüssel "MyCompany" bereits in der Registrierung ist,
kommt es zu einem Fehler beim Befehl, und die Transaktion wird
zurückgesetzt.

New-Item: Ein Schlüssel unter diesem Pfad ist bereits Bei
Zeile:1 Zeichen:9 vorhanden
+ new-item <<<< MyCompany -usetx

Mit dem Befehl "Get-Transaction" wird überprüft, ob die
Transaktion zurückgesetzt wurde und SubscriberCount auf 0
festgelegt ist.

RollbackPreference SubscriberCount Status
------------------ --------------- ------
Error 0 RolledBack

BEISPIEL 6: ÄNDERN DER EINSTELLUNG FÜR DIE ZURÜCKSETZUNG

Wenn die Transaktion stärker fehlertolerant sein soll, können Sie
die Einstellung über den RollbackPreference-Parameter von
Start-Transaction ändern.

Mit dem folgenden Befehl wird eine Transaktion mit der
Zurücksetzungseinstellung "Never" gestartet.

start-transaction -rollbackpreference Never

Wenn bei dem Befehl ein Fehler auftritt, wird in diesem Fall die
Transaktion nicht automatisch zurückgesetzt.

New-Item MyCompany -UseTX

New-Item: Ein Schlüssel unter diesem Pfad ist bereits Bei
Zeile:1 Zeichen:9 vorhanden
+ new-item <<<< MyCompany -usetx

Da die Transaktion noch immer aktiv ist, können Sie den Befehl
als Teil der Transaktion erneut übermitteln.

New-Item MyOtherCompany -UseTX

BEISPIEL 7: VERWENDEN DES CMDLETS "USE-TRANSACTION"

Mit dem Cmdlet "Use-Transaction" können Sie direkt Skripts für
Microsoft .NET Framework-Objekte erstellen, die für Transaktionen
aktiviert sind.
Use-Transaction akzeptiert Skriptblöcke, die nur Befehle und
Ausdrücke enthalten dürfen, die für Transaktionen aktivierte .NET
Framework-Objekte verwenden, z. B. Instanzen der
Microsoft.PowerShell.Commands.Management.TransactedString-Klasse.

Mit dem folgenden Befehl wird eine Transaktion gestartet.

start-transaction

Mit dem folgenden Befehl "New-Object" wird eine Instanz der
TransactedString-Klasse erstellt und in der Variablen "$t"
gespeichert.

$t = New-Object Microsoft.PowerShell.Commands.Management.Tran
sactedString

Im folgenden Befehl wird mit der Append-Methode des
TransactedString-Objekts Text zur Zeichenfolge hinzugefügt. Da
der Befehl nicht Teil der Transaktion ist, wird die Änderung
sofort wirksam.

$t.append("Windows")

Mit dem folgenden Befehl wird die gleiche Append-Methode
verwendet, um Text hinzuzufügen, jedoch wird der Text als Teil
der Transaktion hinzugefügt. Der Befehl wird in geschweifte
Klammern eingeschlossen und als Wert des ScriptBlock-Parameters
von Use-Transaction festgelegt. Der UseTransaction-Parameter
(UseTx) ist erforderlich.

use-transaction {$t.append(" PowerShell")} -usetx

Um den aktuellen Inhalt der in die Transaktion eingefügten
Zeichenfolge in "$t" anzuzeigen, verwenden Sie die ToString-Method
e des TransactedString-Objekts.

$t.tostring()

Die Ausgabe zeigt, dass nur die Änderungen wirksam wurden, die
nicht Teil der Transaktion sind.

Windows

Wenn Sie den aktuellen Inhalt der in die Transaktion eingefügten
Zeichenfolge in "$t" innerhalb der Transaktion anzeigen möchten,
betten Sie den Ausdruck in den Befehl "Use-Transaction" ein.

use-transaction {$s.tostring()} -usetx

Die Ausgabe zeigt die Transaktionsansicht.

Windows PowerShell

Der folgende Befehl führt einen Commit für die Transaktion aus.

complete-transaction

So zeigen Sie die endgültige Zeichenfolge an:

$t.tostring()

Windows PowerShell

BEISPIEL 7: VERWALTEN VON TRANSAKTIONEN MIT MEHREREN ABONNENTEN

Wenn Sie eine Transaktion starten, während eine andere
Transaktion ausgeführt wird, wird von Windows PowerShell
standardmäßig keine zweite Transaktion gestartet. Stattdessen
wird der aktuellen Transaktion ein Abonnent hinzugefügt.

Dieses Beispiel veranschaulicht das Anzeigen und Verwalten einer
Transaktion mit mehreren Abonnenten.

Beginnen Sie, indem Sie eine Transaktion im Schlüssel
"HKCU:\Software" starten.

start-transaction

Mit dem folgenden Befehl rufen Sie mit dem Cmdlet "Get-Transaction
" die aktive Transaktion ab.

get-transaction

Das Ergebnis zeigt das Objekt, das die aktive Transaktion darstellt.

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

Mit dem folgenden Befehl fügen Sie den Schlüssel "MyCompany" der
Registrierung hinzu.
In dem Befehl wird mit dem UseTransaction-Parameter der Befehl in
die Transaktion eingeschlossen.

new-item MyCompany -UseTransaction

Der folgende Befehl startet mit dem Befehl "Start-Transaction"
eine Transaktion. Zwar wird dieser Befehl an der Eingabeaufforderu
ng eingegeben, doch tritt dieses Szenario mit höherer
Wahrscheinlichkeit ein, wenn Sie ein Skript mit einer Transaktion
ausführen.

start-transaction

Der Befehl "Get-Transaction" zeigt, dass die Abonnentenanzahl im
Transaktionsobjekt erhöht wurde. Der Wert ist nun 2.

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

Im nächsten Befehl wird der Registrierungsschlüssel "MyKey" mit
dem Cmdlet "New-ItemProperty" dem Schlüssel "MyCompany"
hinzugefügt. Mit dem UseTransaction-Parameter wird der Befehl in
die Transaktion eingeschlossen.

new-itemproperty -path MyCompany -name MyKey -UseTransaction

Der Schlüssel "MyCompany" ist in der Registrierung nicht
vorhanden, doch wird dieser Befehl erfolgreich ausgeführt, da die
beiden Befehle Teil derselben Transaktion sind.

Der folgende Befehl führt einen Commit für die Transaktion aus.
Wenn die Transaktion zurückgesetzt wurde, wird die Transaktion
für alle Abonnenten zurückgesetzt.

complete-transaction

Der Befehl "Get-Transaction" zeigt, dass die Abonnentenanzahl im
Transaktionsobjekt 1 ist, aber der Wert von "Status" dennoch auf
"Active" (nicht "Committed") festgelegt ist.

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

Wenn Sie den Commit für die Transaktion beenden möchten, geben
Sie den Befehl "Complete-Transaction" ein zweites Mal ein. Wenn
ein Commit für eine Transaktion mit mehreren Abonnenten
ausgeführt werden soll, müssen Sie den Befehl "Complete-Transactio
n" für jeden Start-Transaction-Befehl eingeben.

complete-transaction

Ein weiterer Befehl Get-Transaction zeigt, dass für die
Transaktion ein Commit ausgeführt wurde.

RollbackPreference SubscriberCount Status
------------------ --------------- ------
Error 0 Committed

BEISPIEL 8: VERWALTEN UNABHÄNGIGER TRANSAKTIONEN

Wenn Sie eine Transaktion starten, während eine andere
Transaktion ausgeführt wird, können Sie die neue Transaktion
mithilfe des Independent-Parameters von Start-Transaction als von
der ursprünglichen Transaktion unabhängig festlegen.

In diesem Fall erstellt Start-Transaction ein neues
Transaktionsobjekt und legt die neue Transaktion als aktiv fest.

Beginnen Sie, indem Sie eine Transaktion im Schlüssel
"HKCU:\Software" starten.

start-transaction

Mit dem folgenden Befehl rufen Sie mit dem Cmdlet "Get-Transaction
" die aktive Transaktion ab.

get-transaction

Das Ergebnis zeigt das Objekt, das die aktive Transaktion darstellt.

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

Mit dem folgenden Befehl wird der Registrierungsschlüssel
"MyCompany" als Teil der Transaktion hinzugefügt. Mit dem
UseTransaction-Parameter (UseTx) wird der Befehl in die aktive
Transaktion eingeschlossen.

new-item MyCompany -use

Mit dem folgenden Befehl wird eine neue Transaktion gestartet. Im
Befehl wird mit dem Independent-Parameter angegeben, dass diese
Transaktion kein Abonnent der aktiven Transaktion ist.

start-transaction -independent

Wenn Sie eine unabhängige Transaktion erstellen, wird die neue
(zuletzt erstellte) Transaktion die aktive Transaktion. Mit dem
Befehl "Get-Transaction" können Sie die aktive Transaktion abrufen.

get-transaction

SubscriberCount ist für die Transaktion 1, d. h., es sind keine
weiteren Abonnenten vorhanden, und es handelt sich um eine neue
Transaktion.

RollbackPreference SubscriberCount Status
------------------ --------------- ------
Error 1 Active
Sie können die ursprüngliche Transaktion erst verwalten, wenn die
neue Transaktion beendet wurde (durch Commit oder Zurücksetzen).

Mit dem folgenden Befehl fügen Sie den Schlüssel "MyOtherCompany"
der Registrierung hinzu.
Mit dem UseTransaction-Parameter (UseTx) wird der Befehl in die
aktive Transaktion eingeschlossen.

new-item MyOtherCompany -usetx

Setzen Sie die Transaktion nun zurück. Bei einer einzelnen
Transaktion mit zwei Abonnenten wird beim Zurücksetzen der
Transaktion die gesamte Transaktion für alle Abonnenten zurückgesetzt.

Da diese Transaktionen jedoch unabhängig sind, werden beim
Zurücksetzen der letzten Transaktion die Änderungen an der
Registrierung verworfen, und die ursprüngliche Transaktion wird aktiv.

undo-transaction

Mit dem Befehl "Get-Transaction" wird überprüft, ob die
ursprüngliche Transaktion in der Sitzung immer noch aktiv ist.

get-transaction

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

Der folgende Befehl führt einen Commit für die aktive Transaktion aus.

complete-transaction

Mit dem Befehl Get-ChildItem wird angezeigt, dass die
Registrierung geändert wurde.

dir m*

Struktur: HKEY_CURRENT_USER\Software

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

SIEHE AUCH
Start-Transaction
Get-Transaction
Complete-Transaction
Undo-Transaction
Use-Transaction
Registrierung (Anbieter)
about_Providers
Get-PSProvider
Get-ChildItem

C:\Windows>powershell get-help about_trap -full

ColorConsole [Version 1.7.1000] PowerShell 2.0-Export
Microsoft Windows [Version 6.1.7600]
Copyright (c) 2014 Microsoft Corporation.

OS: Windows-10 / Windows-8.1 & 8 / Windows-7 & Vista / Windows Server 2008-2016
»»»» ColorConsole



 


... Home  
... Impressum
... ColorConsole

... CMD
... Netsh-XP
... Netsh-7
... Netsh-Vista
... Powershell





;-)









Windows 7 download: Starter, Home (Basic Premium), Professional und Win 7 Ultimate!

... facebook.de
0.171
How to open Control Panel in Windows-7 start  (find, run, start)?  / Wo ist der Autostart-Ordner in Windows 8.1, bzw. 8?  / Help! Default bold font is killing my eyes!  / Schatten und gestreifte Linien bei der neuen Grafikkarte (defekt, Fehler)!  / Disable the Windows Store in Windows 8.1 / 10, how to?  / Auto login without password on Windows 7 (How to)?  / How to see installed Windows updates in Windows 7?  / Windows Web Server 2008 direkte Download Links (kostenlose Testversionen)!  / Wo finde ich in Windows 10 die Autoupdate Einstellungen (aktivieren/deaktivieren)?  / External drives are not displayed under Windows 10 (USB, HDD)?  / Wird der Explorer Q-Dir auf Windows-8 funktionieren?  / Cancel all printing orders in Windows 10 via print service?  /