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 för att genomföra transaktionen ange ett kommando för varje Start-Transaction kommando.

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

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

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

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

Det första kommandot dir (Get-ChildItem) 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 dir-kommandot att registret har ändrats.

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

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}

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 kommando för varje kommandot Start-Transaction. Data ändras bara när det sista kommandot Complete-Transaction 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 starttransaktionskommando 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 kommandot Start-Transaction 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 kommandot Complete-Transaction minskar antalet prenumeranter med 1. Detta bekräftas av kommandot Get-Transaction. Inga data ändras dock, vilket framgår av kommandot dir m* (Get-ChildItem).

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

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

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

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 New-Item-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 kommandot Complete-Transaction körs, visar ett enkelt dir -kommando (Get-ChildItem) registret utan den nya nyckeln.

Men när du lägger till parametern UseTransaction i dir-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.

Typ:SwitchParameter
Alias:cf
Position:Named
Standardvärde:False
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-WhatIf

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

Typ:SwitchParameter
Alias:wi
Position:Named
Standardvärde:False
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken: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.