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.