Complete-Transaction
Hiermee wordt de actieve transactie doorgevoerd.
Syntax
Complete-Transaction
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
Met de Complete-Transaction cmdlet wordt een actieve transactie doorgevoerd. 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, moet u één Complete-Transaction opdracht voor elke Start-Transaction opdracht invoeren om de transactie door te voeren.
De Complete-Transaction cmdlet 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
Set-Location hkcu:\software
Start-Transaction
New-Item MyCompany -UseTransaction
Get-ChildItem m*
Hive: HKEY_CURRENT_USER\software
SKC VC Name Property
--- -- ---- --------
82 1 Microsoft {(default)}
Complete-Transaction
Get-ChildItem 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 Complete-Transaction cmdlet gebruikt om een transactie door te voeren.
De Start-Transaction opdracht start de transactie. De opdracht New-Item gebruikt de parameter UseTransaction om de opdracht in de transactie op te nemen.
Met de eerste Get-ChildItem opdracht ziet u dat het nieuwe item nog niet is toegevoegd aan het register.
Met Complete-Transaction de opdracht wordt de transactie doorgevoerd, waardoor de registerwijziging van kracht wordt. Als gevolg hiervan laat de tweede Get-ChildItem opdracht zien dat het register is gewijzigd.
Voorbeeld 2: Een transactie doorvoeren met meer dan één abonnee
Set-Location hkcu:\software
Start-Transaction
New-Item MyCompany -UseTransaction
Hive: HKEY_CURRENT_USER\Software
SKC VC Name Property
--- -- ---- --------
0 0 MyCompany {}
Start-Transaction
Get-Transaction
RollbackPreference SubscriberCount Status
------------------ --------------- ------
Error 2 Active
New-ItemProperty -Path MyCompany -Name MyKey -Value -UseTransaction
MyKey
-----
123
Complete-Transaction
Get-Transaction
RollbackPreference SubscriberCount Status
------------------ --------------- ------
Error 1 Active
Get-ChildItem m*
Hive: HKEY_CURRENT_USER\Software
SKC VC Name Property
--- -- ---- --------
82 1 Microsoft {(default)}
Complete-Transaction
Get-ChildItem 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-Transaction een transactie met meer dan één abonnee doorvoert.
Als u een transactie met meerdere abonnees wilt doorvoeren, moet u één Complete-Transaction opdracht voor elke Start-Transaction opdracht invoeren. De gegevens worden alleen gewijzigd wanneer de laatste Complete-Transaction opdracht wordt verzonden.
Voor demonstratiedoeleinden toont dit voorbeeld een reeks opdrachten die zijn ingevoerd op de opdrachtregel. 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 met een Start-Transaction opdracht. Met New-Item een opdracht met de parameter UseTransaction wordt de MyCompany-sleutel toegevoegd aan de softwaresleutel. Hoewel de New-Item cmdlet een sleutelobject retourneert, worden de gegevens in het register nog niet gewijzigd.
Met een tweede Start-Transaction opdracht wordt een tweede abonnee toegevoegd aan de bestaande transactie. De Get-Transaction cmdlet bevestigt dat het aantal abonnees 2 is. Een New-ItemProperty opdracht met de parameter UseTransaction voegt een registervermelding toe aan de nieuwe MyCompany-sleutel. Nogmaals, de opdracht retourneert een waarde, maar het register wordt niet gewijzigd.
De eerste Complete-Transaction opdracht vermindert het aantal abonnees met 1. Dit wordt bevestigd door een Get-Transaction opdracht. Er worden echter geen gegevens gewijzigd, zoals wordt aangetoond door een Get-ChildItem m* opdracht.
Met de tweede Complete-Transaction opdracht wordt de hele transactie doorgevoerd en worden de gegevens in het register gewijzigd. Dit wordt bevestigd door een tweede Get-ChildItem m* opdracht, waarin de wijzigingen worden weergegeven.
Voorbeeld 3: Een transactie uitvoeren die geen gegevens wijzigt
Set-Location hkcu:\software
Start-Transaction
New-Item MyCompany -UseTransaction
Get-ChildItem m*
Hive: HKEY_CURRENT_USER\Software
SKC VC Name Property
--- -- ---- --------
82 1 Microsoft {(default)}
Get-ChildItem m* -UseTransaction
Hive: HKEY_CURRENT_USER\Software
SKC VC Name Property
--- -- ---- --------
82 1 Microsoft {(default)}
0 0 MyCompany {}
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. Zo kunt u een voorbeeld bekijken van de wijzigingen in de transactie 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 pas aan het register wordt toegevoegd nadat de Complete-Transaction opdracht is uitgevoerd, wordt met een eenvoudige Get-ChildItem opdracht het register zonder de nieuwe sleutel weergegeven.
Wanneer u echter de parameter UseTransaction toevoegt aan de Get-ChildItem 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
Hiermee wordt u gevraagd om bevestiging voordat u de cmdlet uitvoert.
| Type: | SwitchParameter |
| Aliases: | cf |
| Position: | Named |
| Default value: | False |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
Hiermee wordt weergegeven wat er zou gebeuren als u de cmdlet uitvoert. De cmdlet wordt niet uitgevoerd.
| Type: | SwitchParameter |
| Aliases: | wi |
| Position: | Named |
| Default value: | False |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
Invoerwaarden
None
U kunt geen objecten doorsluisen naar deze cmdlet.
Uitvoerwaarden
None
Deze cmdlet genereert geen uitvoer.
Notities
U kunt een transactie die is doorgevoerd, niet terugdraaien of een transactie doorvoeren die is teruggedraaid.
U kunt geen andere transacties dan de actieve transactie terugdraaien. 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.
Verwante koppelingen
Feedback
Feedback verzenden en weergeven voor