Complete-Transaction

Genomför den aktiva transaktionen.

Syntax

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

Description

Cmdleten Complete-Transaction genomför en aktiv transaktion. När du genomför en transaktion slutförs kommandona i transaktionen och de data som påverkas av kommandona ändras.

Om transaktionen innehåller flera prenumeranter måste du ange ett Complete-Transaction kommando för varje Start-Transaction kommando för att genomföra transaktionen.

Cmdleten Complete-Transaction är en av en uppsättning cmdletar som stöder transaktionsfunktionen i Windows PowerShell. Mer information finns i about_Transactions.

Exempel

Exempel 1: Checka in en transaktion

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                      {}

Det här exemplet visar vad som händer när du använder cmdleten Complete-Transaction för att checka in en transaktion.

Kommandot Start-Transaction startar transaktionen. Kommandot New-Item använder parametern UseTransaction för att inkludera kommandot i transaktionen.

Det första Get-ChildItem kommandot visar att det nya objektet ännu inte har lagts till i registret.

Kommandot Complete-Transaction checkar in transaktionen, vilket gör registerändringen effektiv. Därför visar det andra Get-ChildItem kommandot att registret har ändrats.

Exempel 2: Checka in en transaktion som har fler än en prenumerant

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}

Det här exemplet visar hur du använder Complete-Transaction för att checka in en transaktion som har fler än en prenumerant.

Om du vill checka in en transaktion med flera prenumeranter måste du ange ett Complete-Transaction kommando för varje Start-Transaction kommando. Data ändras bara när det slutliga Complete-Transaction kommandot skickas.

I demonstrationssyfte visar det här exemplet en serie kommandon som angetts på kommandoraden. I praktiken kommer transaktioner sannolikt att köras i skript, där den sekundära transaktionen körs av en funktion eller ett hjälpskript som anropas av huvudskriptet.

I det här exemplet startar ett Start-Transaction kommando transaktionen. Ett New-Item kommando med parametern UseTransaction lägger till nyckeln MyCompany i programvarunyckeln. Även om cmdleten New-Item returnerar ett nyckelobjekt ändras inte data i registret ännu.

Ett andra Start-Transaction kommando lägger till en andra prenumerant i den befintliga transaktionen. Cmdleten Get-Transaction bekräftar att antalet prenumeranter är 2. Ett New-ItemProperty-kommando med parametern UseTransaction lägger till en registerpost i den nya MyCompany-nyckeln. Återigen returnerar kommandot ett värde, men registret ändras inte.

Det första Complete-Transaction kommandot minskar antalet prenumeranter med 1. Detta bekräftas av ett Get-Transaction kommando. Inga data ändras dock, vilket framgår av ett Get-ChildItem m* kommando.

Det andra Complete-Transaction kommandot checkar in hela transaktionen och ändrar data i registret. Detta bekräftas av ett andra Get-ChildItem m* kommando som visar ändringarna.

Exempel 3: Utför en transaktion som inte ändrar några data

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

Det här exemplet visar värdet för att använda Get-*-kommandon och andra kommandon som inte ändrar data i en transaktion. När ett Get-\* kommando används i en transaktion hämtar det de objekt som ingår i transaktionen. På så sätt kan du förhandsgranska ändringarna i transaktionen innan ändringarna checkas in.

I det här exemplet startas en transaktion. Ett nytt objekt-kommando med parametern UseTransaction lägger till en ny nyckel i registret som en del av transaktionen.

Eftersom den nya registernyckeln inte läggs till i registret förrän Complete-Transaction kommandot körs, visar ett enkelt Get-ChildItem kommando registret utan den nya nyckeln.

Men när du lägger till parametern UseTransaction i Get-ChildItem kommandot blir kommandot en del av transaktionen och den hämtar objekten i transaktionen även om de ännu inte har lagts till i data.

Parametrar

-Confirm

Uppmanar dig att bekräfta innan du kör cmdleten.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

Visar vad som skulle hända om cmdleten kördes. Cmdleten körs inte.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Indata

None

Du kan inte skicka objekt till den här cmdleten.

Utdata

None

Den här cmdleten genererar inga utdata.

Kommentarer

  • Du kan inte återställa en transaktion som har checkats in eller checka in en transaktion som har återställts.

    Du kan inte återställa någon annan transaktion än den aktiva transaktionen. Om du vill återställa en annan transaktion måste du först checka in eller återställa den aktiva transaktionen.

    Om någon del av en transaktion inte kan genomföras som standard, till exempel när ett kommando i transaktionen resulterar i ett fel, återställs hela transaktionen.