Over transacties
KORTE BESCHRIJVING
Hierin wordt beschreven hoe u transacties beheert in PowerShell.
LANGE BESCHRIJVING
Transacties worden ondersteund in PowerShell vanaf PowerShell 2.0. Met deze functie kunt u een transactie starten, aangeven welke opdrachten deel uitmaken van de transactie en een transactie doorvoeren of terugdraaien.
OVER TRANSACTIES
In PowerShell is een transactie een set van een of meer opdrachten die als een logische eenheid worden beheerd. Een transactie kan worden voltooid ('vastgelegd'), waardoor gegevens worden gewijzigd die door de transactie worden beïnvloed. Of een transactie kan volledig ongedaan worden gemaakt ('teruggedraaid') zodat de betrokken gegevens niet worden gewijzigd door de transactie.
Omdat de opdrachten in een transactie als een eenheid worden beheerd, worden alle opdrachten doorgevoerd of worden alle opdrachten teruggedraaid.
Transacties worden veel gebruikt in gegevensverwerking, met name in databasebewerkingen en voor financiële transacties. Transacties worden meestal gebruikt wanneer het slechtste scenario voor een reeks opdrachten niet is dat ze allemaal mislukken, maar dat sommige opdrachten slagen terwijl andere mislukken, waardoor het systeem in een beschadigde, onwaar of niet-te interpreteren status blijft die moeilijk te herstellen is.
TRANSACTIE-CMDLETS
PowerShell bevat verschillende cmdlets die zijn ontworpen voor het beheren van transacties.
- Start-transactie: hiermee wordt een nieuwe transactie gestart.
- Use-Transaction: hiermee voegt u een opdracht of expressie toe aan de transactie. De opdracht moet objecten met transactie-functionaliteit gebruiken.
- Ongedaan maken van transactie: hiermee wordt de transactie teruggedraaid, zodat er geen gegevens worden gewijzigd door de transactie.
- Complete-Transaction: hiermee wordt de transactie doorgevoerd. De gegevens die door de transactie worden beïnvloed, worden gewijzigd.
- Get-Transaction: hiermee haalt u informatie op over de actieve transactie.
Voor een lijst met transactie-cmdlets typt u:
get-command *transaction
Voor gedetailleerde informatie over de cmdlets typt u:
get-help use-transaction -detailed
ELEMENTEN WAARVOOR TRANSACTIES ZIJN INGESCHAKELD
Als u wilt deelnemen aan een transactie, moeten zowel de cmdlet als de provider transacties ondersteunen. Deze functie is ingebouwd in de objecten die worden beïnvloed door de transactie.
De PowerShell Registry-provider ondersteunt transacties in Windows Vista. Het TransactedString-object (Microsoft.PowerShell.Commands.Management.TransactedString) werkt met elk besturingssysteem waarop PowerShell wordt uitgevoerd.
Andere PowerShell-providers kunnen transacties ondersteunen. Als u de PowerShell-providers in uw sessie wilt vinden die transacties ondersteunen, gebruikt u de volgende opdracht om de waarde 'Transacties' te vinden in de eigenschap Capabilities van providers:
get-psprovider | where {$_.Capabilities -like "transactions"}
Zie de Help voor de provider voor meer informatie over een provider. Als u hulp van de provider wilt krijgen, typt u:
get-help <provider-name>
Als u bijvoorbeeld Help voor de registerprovider wilt krijgen, typt u:
get-help registry
DE PARAMETER USETRANSACTION
Cmdlets die transacties kunnen ondersteunen, hebben de parameter UseTransaction. Deze parameter bevat de opdracht in de actieve transactie. U kunt de volledige parameternaam of de alias 'usetx' gebruiken.
De parameter kan alleen worden gebruikt wanneer de sessie een actieve transactie bevat. Als u een opdracht invoert met de parameter UseTransaction wanneer er geen actieve transactie is, mislukt de opdracht.
Als u cmdlets wilt zoeken met de parameter UseTransaction, typt u:
get-help * -parameter UseTransaction
In PowerShell Core ondersteunen alle cmdlets die zijn ontworpen voor gebruik met PowerShell-providers transacties. Als gevolg hiervan kunt u de provider-cmdlets gebruiken om transacties te beheren.
Zie about_Providers voor meer informatie over PowerShell-providers.
HET TRANSACTIEOBJECT
Transacties worden in PowerShell vertegenwoordigd door een transactieobject, System.Management.Automation.Transaction.
Het object heeft de volgende eigenschappen:
RollbackPreference: bevat de terugdraaivoorkeur die is ingesteld voor de huidige transactie. U kunt de voorkeur voor terugdraaien instellen wanneer u Start-Transaction gebruikt om de transactie te starten.
De voorkeur voor terugdraaien bepaalt de voorwaarden waaronder de transactie automatisch wordt teruggedraaid. Geldige waarden zijn Error, TerminatingError en Never. De standaardwaarde is Fout.
Status: bevat de huidige status van de transactie. Geldige waarden zijn Active, Committed en RolledBack.
SubscriberCount: Bevat het aantal abonnees op de transactie. Een abonnee wordt toegevoegd aan een transactie wanneer u een transactie start terwijl een andere transactie wordt uitgevoerd. Het aantal abonnees wordt afgetrokken wanneer een abonnee de transactie doorvoert.
ACTIEVE TRANSACTIES
In PowerShell is slechts één transactie tegelijk actief en kunt u alleen de actieve transactie beheren. Meerdere transacties kunnen tegelijkertijd in dezelfde sessie worden uitgevoerd, maar alleen de laatst gestarte transactie is actief.
Als gevolg hiervan kunt u een bepaalde transactie niet opgeven wanneer u de transactie-cmdlets gebruikt. Opdrachten zijn altijd van toepassing op de actieve transactie.
Dit is het duidelijkst in het gedrag van de cmdlet Get-Transaction. Wanneer u een Get-Transaction opdracht invoert, krijgt Get-Transaction altijd maar één transactieobject. Dit object is het object dat de actieve transactie vertegenwoordigt.
Als u een andere transactie wilt beheren, moet u eerst de actieve transactie voltooien door deze door te voeren of terug te draaien. Wanneer u dit doet, wordt de vorige transactie automatisch actief. Transacties worden actief in de omgekeerde volgorde waarin ze worden gestart, zodat de meest recent gestarte transactie altijd actief is.
ABONNEES EN ONAFHANKELIJKE TRANSACTIES
Als u een transactie start terwijl een andere transactie wordt uitgevoerd, start PowerShell standaard geen nieuwe transactie. In plaats daarvan wordt een 'abonnee' toegevoegd aan de huidige transactie.
Wanneer een transactie meerdere abonnees heeft, wordt met één Undo-Transaction opdracht op elk gewenst moment de hele transactie teruggedraaid voor alle abonnees. Als u de transactie wilt doorvoeren, moet u echter een Complete-Transaction opdracht invoeren voor elke abonnee.
Als u het aantal abonnees van een transactie wilt vinden, controleert u de eigenschap SubscriberCount van het transactieobject. De volgende opdracht gebruikt bijvoorbeeld de cmdlet Get-Transaction om de waarde van de eigenschap SubscriberCount van de actieve transactie op te halen:
(Get-Transaction).SubscriberCount
Het toevoegen van een abonnee is het standaardgedrag, omdat de meeste transacties die worden gestart terwijl een andere transactie wordt uitgevoerd, gerelateerd zijn aan de oorspronkelijke transactie. In het typische model roept een script met een transactie een helperscript aan dat een eigen transactie bevat. Omdat de transacties gerelateerd zijn, moeten ze worden teruggedraaid of als een eenheid worden doorgevoerd.
U kunt echter een transactie starten die onafhankelijk is van de huidige transactie met behulp van de parameter Onafhankelijk van de cmdlet Start-Transaction.
Wanneer u een onafhankelijke transactie start, maakt Start-Transaction een nieuw transactieobject en wordt de nieuwe transactie de actieve transactie. De onafhankelijke transactie kan worden doorgevoerd of teruggedraaid zonder dat dit van invloed is op de oorspronkelijke transactie.
Wanneer de onafhankelijke transactie is voltooid (vastgelegd of teruggedraaid), wordt de oorspronkelijke transactie opnieuw de actieve transactie.
GEGEVENS WIJZIGEN
Wanneer u transacties gebruikt om gegevens te wijzigen, worden de gegevens die worden beïnvloed door de transactie pas gewijzigd als u de transactie doorvoert. Dezelfde gegevens kunnen echter worden gewijzigd door opdrachten die geen deel uitmaken van de transactie.
Houd hier rekening mee wanneer u transacties gebruikt om gedeelde gegevens te beheren. Databases hebben doorgaans mechanismen waarmee de gegevens worden vergrendeld terwijl u eraan werkt, waardoor andere gebruikers en andere opdrachten, scripts en functies deze niet kunnen wijzigen.
De vergrendeling is echter een functie van de database. Het is niet gerelateerd aan transacties. Als u werkt in een bestandssysteem met transactie-functionaliteit of een ander gegevensarchief, kunnen de gegevens worden gewijzigd terwijl de transactie wordt uitgevoerd.
VOORBEELDEN
In de voorbeelden in deze sectie wordt de PowerShell Registry-provider gebruikt en wordt ervan uitgegaan dat u hiermee bekend bent. Voor informatie over de registerprovider typt u 'get-help registry'.
VOORBEELD 1: EEN TRANSACTIE DOORVOEREN
Gebruik de cmdlet Start-Transaction om een transactie te maken. Met de volgende opdracht wordt een transactie gestart met de standaardinstellingen.
start-transaction
Als u opdrachten wilt opnemen in de transactie, gebruikt u de parameter UseTransaction van de cmdlet. Standaard worden opdrachten niet opgenomen in de transactie,
De volgende opdracht, waarmee de huidige locatie in de softwaresleutel van het hkcu-station wordt ingesteld, is bijvoorbeeld niet opgenomen in de transactie.
cd hkcu:\Software
Met de volgende opdracht, waarmee de sleutel MyCompany wordt gemaakt, wordt de parameter UseTransaction van de cmdlet New-Item gebruikt om de opdracht op te nemen in de actieve transactie.
new-item MyCompany -UseTransaction
De opdracht retourneert een object dat de nieuwe sleutel vertegenwoordigt, maar omdat de opdracht deel uitmaakt van de transactie, is het register nog niet gewijzigd.
Hive: HKEY_CURRENT_USER\Software
SKC VC Name Property
--- -- ---- --------
0 0 MyCompany {}
Gebruik de cmdlet Complete-Transaction om de transactie door te voeren. Omdat dit altijd van invloed is op de actieve transactie, kunt u de transactie niet opgeven.
complete-transaction
Als gevolg hiervan wordt de sleutel MyCompany toegevoegd aan het register.
dir m*
Hive: HKEY_CURRENT_USER\software
SKC VC Name Property
--- -- ---- --------
83 1 Microsoft {(default)}
0 0 MyCompany {}
VOORBEELD 2: EEN TRANSACTIE TERUGDRAAIEN
Gebruik de cmdlet Start-Transaction om een transactie te maken. Met de volgende opdracht wordt een transactie gestart met de standaardinstellingen.
start-transaction
Met de volgende opdracht, waarmee de sleutel MyOtherCompany wordt gemaakt, wordt de parameter UseTransaction van de cmdlet New-Item gebruikt om de opdracht op te nemen in de actieve transactie.
new-item MyOtherCompany -UseTransaction
De opdracht retourneert een object dat de nieuwe sleutel vertegenwoordigt, maar omdat de opdracht deel uitmaakt van de transactie, is het register nog niet gewijzigd.
Hive: HKEY_CURRENT_USER\Software
SKC VC Name Property
--- -- ---- --------
0 0 MyOtherCompany {}
Als u de transactie wilt terugdraaien, gebruikt u de cmdlet Undo-Transaction. Omdat dit altijd van invloed is op de actieve transactie, geeft u de transactie niet op.
Undo-transaction
Het resultaat is dat de sleutel MyOtherCompany niet wordt toegevoegd aan het register.
dir m*
Hive: HKEY_CURRENT_USER\software
SKC VC Name Property
--- -- ---- --------
83 1 Microsoft {(default)}
0 0 MyCompany {}
VOORBEELD 3: EEN VOORBEELD VAN EEN TRANSACTIE BEKIJKEN
Normaal gesproken worden gegevens gewijzigd door de opdrachten die in een transactie worden gebruikt. De opdrachten waarmee gegevens worden opgehaald, zijn echter ook handig in een transactie, omdat ze gegevens in de transactie ophalen. Dit biedt een voorbeeld van de wijzigingen die het doorvoeren van de transactie zou veroorzaken.
In het volgende voorbeeld ziet u hoe u de opdracht Get-ChildItem (de alias is 'dir') gebruikt om een voorbeeld van de wijzigingen in een transactie te bekijken.
Met de volgende opdracht wordt een transactie gestart.
start-transaction
Met de volgende opdracht wordt de cmdlet New-ItemProperty gebruikt om de registervermelding MyKey toe te voegen aan de sleutel MyCompany. De opdracht gebruikt de parameter UseTransaction om de opdracht op te nemen in de transactie.
new-itemproperty -path MyCompany -Name MyKey -value 123 -UseTransaction
De opdracht retourneert een object dat de nieuwe registervermelding vertegenwoordigt, maar de registervermelding wordt niet gewijzigd.
MyKey
-----
123
Als u de items wilt ophalen die zich momenteel in het register bevinden, gebruikt u een Get-ChildItem opdracht ('dir') zonder de parameter UseTransaction. Met de volgende opdracht worden items opgehaald die beginnen met 'M'.
dir m*
Het resultaat laat zien dat er nog geen vermeldingen zijn toegevoegd aan de sleutel Mijnbedrijf.
Hive: HKEY_CURRENT_USER\Software
SKC VC Name Property
--- -- ---- --------
83 1 Microsoft {(default)}
0 0 MyCompany {}
Als u een voorbeeld wilt bekijken van het effect van het doorvoeren van de transactie, voert u een Get-ChildItem -opdracht (dir) in met de parameter UseTransaction. Deze opdracht heeft een weergave van de gegevens in de transactie.
dir m* -useTransaction
Het resultaat laat zien dat, als de transactie wordt doorgevoerd, de vermelding MyKey wordt toegevoegd aan de sleutel MyCompany.
Hive: HKEY_CURRENT_USER\Software
SKC VC Name Property
--- -- ---- --------
83 1 Microsoft {(default)}
0 1 MyCompany {MyKey}
VOORBEELD 4: TRANSACTED EN NON-TRANSACTED OPDRACHTEN COMBINEREN
U kunt niet-uitgevoerde opdrachten invoeren tijdens een transactie. De niet-uitgevoerde opdrachten hebben onmiddellijk invloed op de gegevens, maar hebben geen invloed op de transactie. Met de volgende opdracht wordt een transactie gestart in de registersleutel HKCU:\Software.
start-transaction
De volgende drie opdrachten gebruiken de cmdlet New-Item om sleutels toe te voegen aan het register. De eerste en derde opdracht gebruiken de parameter UseTransaction om de opdrachten in de transactie op te nemen. De tweede opdracht laat de parameter weg. Omdat de tweede opdracht niet is opgenomen in de transactie, is deze onmiddellijk van kracht.
new-item MyCompany1 -UseTransaction
new-item MyCompany2
new-item MyCompany3 -UseTransaction
Als u de huidige status van het register wilt weergeven, gebruikt u een opdracht Get-ChildItem (dir) zonder de parameter UseTransaction. Met deze opdracht worden items opgehaald die beginnen met 'M'.
dir m*
Het resultaat laat zien dat de sleutel MyCompany2 is toegevoegd aan het register, maar de sleutels MyCompany1 en MyCompany3, die deel uitmaken van de transactie, worden niet toegevoegd.
Hive: HKEY_CURRENT_USER\Software
SKC VC Name Property
--- -- ---- --------
83 1 Microsoft {(default)}
0 0 MyCompany2 {}
Met de volgende opdracht wordt de transactie doorgevoerd.
complete-transaction
Nu worden de sleutels die zijn toegevoegd als onderdeel van de transactie, weergegeven in het register.
dir m*
Hive: HKEY_CURRENT_USER\Software
SKC VC Name Property
--- -- ---- --------
83 1 Microsoft {(default)}
0 0 MyCompany1 {}
0 0 MyCompany2 {}
0 0 MyCompany3 {}
VOORBEELD 5: AUTOMATISCH TERUGDRAAIEN GEBRUIKEN
Wanneer een opdracht in een transactie een fout van welke aard dan ook genereert, wordt de transactie automatisch teruggedraaid.
Dit standaardgedrag is ontworpen voor scripts die transacties uitvoeren. Scripts zijn doorgaans goed getest en bevatten foutafhandelingslogica, dus fouten worden niet verwacht en moeten de transactie beëindigen.
Met de eerste opdracht wordt een transactie gestart in de registersleutel HKCU:\Software.
start-transaction
Met de volgende opdracht wordt de cmdlet New-Item gebruikt om de sleutel MyCompany toe te voegen aan het register. De opdracht maakt gebruik van de parameter UseTransaction (de alias is 'usetx') om de opdracht op te nemen in de transactie.
New-Item MyCompany -UseTX
Omdat de sleutel MyCompany al in het register bestaat, mislukt de opdracht en wordt de transactie teruggedraaid.
New-Item : A key at this path already exists
At line:1 char:9
+ new-item <<<< MyCompany -usetx
Een Get-Transaction opdracht bevestigt dat de transactie is teruggedraaid en dat de SubscriberCount 0 is.
RollbackPreference SubscriberCount Status
------------------ --------------- ------
Error 0 RolledBack
VOORBEELD 6: DE VOORKEUR VOOR TERUGDRAAIEN WIJZIGEN
Als u wilt dat de transactie fouttoleranter is, kunt u de parameter RollbackPreference van Start-Transaction gebruiken om de voorkeur te wijzigen.
Met de volgende opdracht wordt een transactie gestart met de voorkeur 'Nooit' voor terugdraaien.
start-transaction -rollbackpreference Never
In dit geval, wanneer de opdracht mislukt, wordt de transactie niet automatisch teruggedraaid.
New-Item MyCompany -UseTX
New-Item : A key at this path already exists
At line:1 char:9
+ new-item <<<< MyCompany -usetx
Omdat de transactie nog steeds actief is, kunt u de opdracht opnieuw indienen als onderdeel van de transactie.
New-Item MyOtherCompany -UseTX
VOORBEELD 7: DE CMDLET USE-TRANSACTION GEBRUIKEN
Met de cmdlet Use-Transaction kunt u directe scripts uitvoeren voor Microsoft-.NET Framework-objecten waarvoor transacties zijn ingeschakeld. Use-Transaction gebruikt een scriptblok dat alleen opdrachten en expressies mag bevatten die gebruikmaken van transactie-ingeschakelde .NET Framework-objecten, zoals exemplaren van de klasse Microsoft.PowerShell.Commands.Management.TransactedString.
Met de volgende opdracht wordt een transactie gestart.
start-transaction
Met de volgende New-Object opdracht maakt u een exemplaar van de klasse TransactedString en slaat u deze op in de variabele $t.
$t = New-Object Microsoft.PowerShell.Commands.Management.TransactedString
Met de volgende opdracht wordt de methode Append van het object TransactedString gebruikt om tekst toe te voegen aan de tekenreeks. Omdat de opdracht geen deel uitmaakt van de transactie, wordt de wijziging onmiddellijk van kracht.
$t.append("Windows")
Met de volgende opdracht wordt dezelfde methode Toevoegen gebruikt om tekst toe te voegen, maar wordt de tekst toegevoegd als onderdeel van de transactie. De opdracht staat tussen accolades en is ingesteld als de waarde van de parameter ScriptBlock van Use-Transaction. De parameter UseTransaction (UseTx) is vereist.
use-transaction {$t.append(" PowerShell")} -usetx
Als u de huidige inhoud van de transacted tekenreeks in $t wilt zien, gebruikt u de methode ToString van het object TransactedString.
$t.tostring()
De uitvoer laat zien dat alleen de niet-doorgevoerde wijzigingen effectief zijn.
Windows
Als u de huidige inhoud van de transacted tekenreeks in $t vanuit de transactie wilt zien, sluit u de expressie in een Use-Transaction opdracht in.
use-transaction {$s.tostring()} -usetx
De uitvoer toont de transactieweergave.
PowerShell
Met de volgende opdracht wordt de transactie doorgevoerd.
complete-transaction
Ga als volgende te werk om de uiteindelijke tekenreeks te zien:
$t.tostring()
PowerShell
VOORBEELD 8: TRANSACTIES MET MEERDERE ABONNEES BEHEREN
Wanneer u een transactie start terwijl een andere transactie wordt uitgevoerd, maakt PowerShell standaard geen tweede transactie. In plaats daarvan wordt een abonnee toegevoegd aan de huidige transactie.
In dit voorbeeld ziet u hoe u een transactie met meerdere abonnees kunt weergeven en beheren.
Begin met het starten van een transactie in de HKCU:\Software-sleutel.
start-transaction
De volgende opdracht maakt gebruik van de Get-Transaction opdracht om de actieve transactie op te halen.
get-transaction
Het resultaat toont het object dat de actieve transactie vertegenwoordigt.
RollbackPreference SubscriberCount Status
------------------ --------------- ------
Error 1 Active
Met de volgende opdracht wordt de sleutel MyCompany aan het register toegevoegd. De opdracht gebruikt de parameter UseTransaction om de opdracht op te nemen in de transactie.
new-item MyCompany -UseTransaction
De volgende opdracht maakt gebruik van de Start-Transaction opdracht om een transactie te starten. Hoewel deze opdracht wordt getypt bij de opdrachtprompt, is de kans groter dat dit scenario zich voordoet wanneer u een script uitvoert dat een transactie bevat.
start-transaction
Een Get-Transaction opdracht geeft aan dat het aantal abonnees voor het transactieobject wordt verhoogd. De waarde is nu 2.
RollbackPreference SubscriberCount Status
------------------ --------------- ------
Error 2 Active
De volgende opdracht gebruikt de cmdlet New-ItemProperty om de registervermelding MyKey toe te voegen aan de sleutel MyCompany. De parameter UseTransaction wordt gebruikt om de opdracht in de transactie op te nemen.
new-itemproperty -path MyCompany -name MyKey -UseTransaction
De sleutel MyCompany bestaat niet in het register, maar deze opdracht slaagt omdat de twee opdrachten deel uitmaken van dezelfde transactie.
Met de volgende opdracht wordt de transactie doorgevoerd. Als de transactie wordt teruggedraaid, wordt de transactie teruggedraaid voor alle abonnees.
complete-transaction
Een Get-Transaction opdracht geeft aan dat het aantal abonnees voor het transactieobject 1 is, maar de waarde van Status is nog steeds Actief (niet doorgevoerd).
RollbackPreference SubscriberCount Status
------------------ --------------- ------
Error 1 Active
Voer een tweede opdracht Voltooien- Transactie in om het doorvoeren van de transactie te voltooien. Als u een transactie met meerdere abonnees wilt doorvoeren, moet u één Complete-Transaction opdracht invoeren voor elke Start-Transaction opdracht.
complete-transaction
Een andere Get-Transaction opdracht geeft aan dat de transactie is doorgevoerd.
RollbackPreference SubscriberCount Status
------------------ --------------- ------
Error 0 Committed
VOORBEELD 9: ONAFHANKELIJKE TRANSACTIES BEHEREN
Wanneer u een transactie start terwijl een andere transactie wordt uitgevoerd, kunt u de parameter Independent van Start-Transaction gebruiken om de nieuwe transactie onafhankelijk te maken van de oorspronkelijke transactie.
Wanneer u dit doet, maakt Start-Transaction een nieuw transactieobject en maakt de nieuwe transactie de actieve transactie.
Begin met het starten van een transactie in de HKCU:\Software-sleutel.
start-transaction
De volgende opdracht maakt gebruik van de Get-Transaction opdracht om de actieve transactie op te halen.
get-transaction
Het resultaat toont het object dat de actieve transactie vertegenwoordigt.
RollbackPreference SubscriberCount Status
------------------ --------------- ------
Error 1 Active
Met de volgende opdracht wordt de registersleutel MyCompany toegevoegd als onderdeel van de transactie. De parameter UseTransaction (UseTx) wordt gebruikt om de opdracht op te nemen in de actieve transactie.
new-item MyCompany -use
Met de volgende opdracht wordt een nieuwe transactie gestart. De opdracht gebruikt de parameter Independent om aan te geven dat deze transactie geen abonnee is van de actieve transactie.
start-transaction -independent
Wanneer u een onafhankelijke transactie maakt, wordt de nieuwe (meest recent gemaakte) transactie de actieve transactie. U kunt een Get-Transaction opdracht gebruiken om de actieve transactie op te halen.
get-transaction
Houd er rekening mee dat het Aantal abonnees van de transactie 1 is, wat aangeeft dat er geen andere abonnees zijn en dat de transactie nieuw is.
RollbackPreference SubscriberCount Status
------------------ --------------- ------
Error 1 Active
De nieuwe transactie moet zijn voltooid (vastgelegd of teruggedraaid) voordat u de oorspronkelijke transactie kunt beheren.
Met de volgende opdracht wordt de sleutel MyOtherCompany aan het register toegevoegd. De parameter UseTransaction (UseTx) wordt gebruikt om de opdracht op te nemen in de actieve transactie.
new-item MyOtherCompany -usetx
Draai nu de transactie terug. Als er één transactie met twee abonnees was, zou het terugdraaien van de transactie de hele transactie terugdraaien voor alle abonnees.
Omdat deze transacties echter onafhankelijk zijn, annuleert het terugdraaien van de nieuwste transactie de registerwijzigingen en wordt de oorspronkelijke transactie de actieve transactie.
undo-transaction
Een Get-Transaction opdracht bevestigt dat de oorspronkelijke transactie nog steeds actief is in de sessie.
get-transaction
RollbackPreference SubscriberCount Status
------------------ --------------- ------
Error 1 Active
Met de volgende opdracht wordt de actieve transactie doorgevoerd.
complete-transaction
Een Get-ChildItem opdracht geeft aan dat het register is gewijzigd.
dir m*
Hive: HKEY_CURRENT_USER\Software
SKC VC Name Property
--- -- ---- --------
83 1 Microsoft {(default)}
0 0 MyCompany {}