Delen via


Complete-Transaction

De actieve transactie doorvoert.

Syntaxis

Complete-Transaction
        [-WhatIf]
        [-Confirm]
        [<CommonParameters>]

Description

De cmdlet Complete Transaction voert een actieve transactie door. Wanneer u een transactie doorvoert, worden de opdrachten in de transactie voltooid en worden de gegevens gewijzigd die worden beïnvloed door de opdrachten.

Als de transactie meerdere abonnees bevat om de transactie door te voeren, moet u één opdracht Complete-Transaction invoeren voor elke Start-Transaction opdracht.

De cmdlet Complete Transaction is een van een set cmdlets die ondersteuning bieden voor de transactiefunctie in Windows PowerShell. Zie about_Transactions voor meer informatie.

Voorbeelden

Voorbeeld 1: Een transactie doorvoeren

PS C:\> cd hkcu:\software
PS HKCU:\software> Start-Transaction
PS HKCU:\software> New-Item MyCompany -UseTransaction
PS HKCU:\software> dir m*
Hive: HKEY_CURRENT_USER\software

SKC  VC Name                           Property
---  -- ----                           --------
82   1 Microsoft                      {(default)}

PS HKCU:\software> Complete-Transaction
PS HKCU:\software> dir m*
Hive: HKEY_CURRENT_USER\Software

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

In dit voorbeeld ziet u wat er gebeurt wanneer u de cmdlet Complete Transaction gebruikt om een transactie door te voeren.

Met de opdracht Start-Transaction wordt de transactie gestart. De opdracht New-Item maakt gebruik van de parameter UseTransaction om de opdracht in de transactie op te nemen.

De eerste dir (Get-ChildItem) opdracht geeft aan dat het nieuwe item nog niet is toegevoegd aan het register.

Met de opdracht Complete Transaction wordt de transactie doorgevoerd, waardoor de registerwijziging van kracht wordt. Als gevolg hiervan geeft de tweede dir-opdracht aan dat het register is gewijzigd.

Voorbeeld 2: Een transactie doorvoeren met meer dan één abonnee

PS C:\> cd hkcu:\software
PS HKCU:\software> Start-Transaction
PS HKCU:\software> New-Item MyCompany -UseTransaction
Hive: HKEY_CURRENT_USER\Software

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

PS HKCU:\software> Start-Transaction
PS HKCU:\Software> Get-Transaction

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

PS HKCU:\software> New-ItemProperty -Path MyCompany -Name MyKey -Value -UseTransaction

MyKey
-----
123

PS HKCU:\software> Complete-Transaction
PS HKCU:\software> Get-Transaction

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

PS HKCU:\software> dir m*
Hive: HKEY_CURRENT_USER\Software

SKC  VC Name                           Property
---  -- ----                           --------
82   1 Microsoft                      {(default)}

PS HKCU:\software> Complete-Transaction
PS HKCU:\software> dir m*
Hive: HKEY_CURRENT_USER\Software

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

In dit voorbeeld ziet u hoe u complete transactie- gebruikt om een transactie met meer dan één abonnee vast te leggen.

Als u een transactie met meerdere abonnees wilt doorvoeren, moet u één opdracht Complete-Transaction invoeren voor elke opdracht Start-Transaction. De gegevens worden alleen gewijzigd wanneer de laatste opdracht Complete-Transaction wordt verzonden.

Voor demonstratiedoeleinden toont dit voorbeeld een reeks opdrachten die op de opdrachtregel zijn ingevoerd. In de praktijk worden transacties waarschijnlijk uitgevoerd in scripts, waarbij de secundaire transactie wordt uitgevoerd door een functie of helperscript dat wordt aangeroepen door het hoofdscript.

In dit voorbeeld wordt de transactie gestart door een opdracht Start-Transaction. Een opdracht New-Item met de parameter UseTransaction voegt de MyCompany-sleutel toe aan de softwaresleutel. Hoewel de cmdlet New-Item een sleutelobject retourneert, worden de gegevens in het register nog niet gewijzigd.

Met een tweede opdracht Start-Transaction voegt u een tweede abonnee toe aan de bestaande transactie. De cmdlet Get-Transaction bevestigt dat het aantal abonnees 2 is. Een New-ItemProperty-opdracht met de parameter UseTransaction voegt een registervermelding toe aan de nieuwe MyCompany-sleutel. Opnieuw retourneert de opdracht een waarde, maar het register wordt niet gewijzigd.

De eerste opdracht Complete-Transaction vermindert het aantal abonnees met 1. Dit wordt bevestigd door een opdracht Get-Transaction. Er worden echter geen gegevens gewijzigd, zoals wordt aangetoond door een dir m* (Get-ChildItem) opdracht.

De tweede opdracht Complete-Transaction voert de hele transactie door en wijzigt de gegevens in het register. Dit wordt bevestigd door een tweede dir m* opdracht, waarin de wijzigingen worden weergegeven.

Voorbeeld 3: Een transactie uitvoeren die geen gegevens wijzigt

PS C:\> cd hkcu:\software
PS HKCU:\software> Start-Transaction
PS HKCU:\software> New-Item MyCompany -UseTransaction
PS HKCU:\software> dir m*
Hive: HKEY_CURRENT_USER\Software

SKC  VC Name                           Property
---  -- ----                           --------
82   1 Microsoft                      {(default)}

PS HKCU:\software> dir m* -UseTransaction
Hive: HKEY_CURRENT_USER\Software

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

PS HKCU:\software> Complete-Transaction

In dit voorbeeld ziet u de waarde van het gebruik van Get-*-opdrachten en andere opdrachten die geen gegevens wijzigen in een transactie. Wanneer een Get-*-opdracht wordt gebruikt in een transactie, worden de objecten opgehaald die deel uitmaken van de transactie. Hiermee kunt u een voorbeeld van de wijzigingen in de transactie bekijken voordat de wijzigingen worden doorgevoerd.

In dit voorbeeld wordt een transactie gestart. Een New-Item-opdracht met de parameter UseTransaction voegt een nieuwe sleutel toe aan het register als onderdeel van de transactie.

Omdat de nieuwe registersleutel niet aan het register wordt toegevoegd totdat de opdracht Complete Transaction wordt uitgevoerd, wordt met een eenvoudige opdracht (Get-ChildItem) het register zonder de nieuwe sleutel weergegeven.

Wanneer u echter de parameter UseTransaction toevoegt aan de dir-opdracht, wordt de opdracht onderdeel van de transactie en worden de items in de transactie opgehaald, zelfs als ze nog niet aan de gegevens zijn toegevoegd.

Parameters

-Confirm

U wordt gevraagd om bevestiging voordat u de cmdlet uitvoert.

Type:SwitchParameter
Aliassen:cf
Position:Named
Default value:False
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

-WhatIf

Toont wat er zou gebeuren als de cmdlet wordt uitgevoerd. De cmdlet wordt niet uitgevoerd.

Type:SwitchParameter
Aliassen:wi
Position:Named
Default value:False
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

Invoerwaarden

None

U kunt geen objecten doorsluisen naar deze cmdlet.

Uitvoerwaarden

None

Met deze cmdlet wordt geen uitvoer gegenereerd.

Notities

  • U kunt een transactie die is doorgevoerd, niet terugdraaien of een transactie doorvoeren die is teruggedraaid.

    U kunt geen andere transactie terugdraaien dan de actieve transactie. Als u een andere transactie wilt terugdraaien, moet u eerst de actieve transactie doorvoeren of terugdraaien.

    Als een deel van een transactie niet kan worden doorgevoerd, bijvoorbeeld wanneer een opdracht in de transactie een fout oplevert, wordt de hele transactie teruggedraaid.