Complete-Transaction
Potvrdí aktivní transakci.
Syntaxe
Complete-Transaction
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
Rutina Complete-Transaction potvrdí aktivní transakci. Při potvrzení transakce jsou příkazy v transakci finalizovány a data ovlivněná příkazy se změní.
Pokud transakce obsahuje více odběratelů, k potvrzení transakce, musíte zadat jeden Complete-Transaction příkaz pro každý příkaz Start-Transaction.
Rutina Complete-Transaction je jednou ze sady rutin, které podporují funkci transakcí ve Windows PowerShellu. Další informace najdete v tématu about_Transactions.
Příklady
Příklad 1: Potvrzení transakce
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 {}
Tento příklad ukazuje, co se stane, když k potvrzení transakce použijete rutinu Complete-Transaction.
Příkaz Start-Transaction spustí transakci. Příkaz New-Item používá parametr UseTransaction k zahrnutí příkazu do transakce.
První příkaz dir (Get-ChildItem) ukazuje, že nová položka ještě nebyla přidána do registru.
Complete-Transaction příkaz potvrdí transakci, což činí změnu registru efektivní. V důsledku toho druhý příkaz dir ukazuje, že se registr změnil.
Příklad 2: Potvrzení transakce, která má více než jednoho odběratele
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}
Tento příklad ukazuje, jak použít Complete-Transaction k potvrzení transakce, která má více než jednoho odběratele.
Chcete-li potvrdit transakci s více předplatiteli, musíte zadat jeden Complete-Transaction příkaz pro každý Start-Transaction příkaz. Data se změní pouze v případech, kdy je odeslán konečný Complete-Transaction příkaz.
Pro demonstrační účely ukazuje tento příklad řadu příkazů zadaných na příkazovém řádku. V praxi se transakce budou pravděpodobně spouštět ve skriptech, přičemž sekundární transakce se spouští funkcí nebo pomocným skriptem, který je volána hlavním skriptem.
V tomto příkladu spustí start-transaction příkaz transakce. Příkaz New-Item s parametrem UseTransaction přidá klíč MyCompany do klíče Software. Přestože rutina New-Item vrací objekt klíče, data v registru se ještě nezměnila.
Druhý příkazu Start-Transaction přidá do existující transakce druhý odběratel. Rutina Get-Transaction potvrzuje, že počet odběratelů je 2. Příkaz New-ItemProperty s parametrem UseTransaction přidá položku registru do nového klíče MyCompany. Příkaz znovu vrátí hodnotu, ale registr se nezmění.
První Complete-Transaction příkaz snižuje počet odběratelů o 1. To je potvrzeno příkazem Get-Transaction. Žádná data se však nezmění, jak je důkazem příkazu dir m* (Get-ChildItem).
Druhý Complete-Transaction příkaz potvrdí celou transakci a změní data v registru. To potvrzuje druhý příkaz dir m*, který ukazuje změny.
Příklad 3: Provedení transakce, která nemění žádná 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
Tento příklad ukazuje hodnotu použití příkazů Get-* a dalších příkazů, které nemění data v transakci. Pokud je příkaz Get-* použit v transakci, získá objekty, které jsou součástí transakce. To vám umožní zobrazit náhled změn v transakci před potvrzením změn.
V tomto příkladu se spustí transakce. Příkaz New-Item s parametrem UseTransaction přidá nový klíč do registru jako součást transakce.
Vzhledem k tomu, že se nový klíč registru nepřidá do registru, dokud se nespustí příkaz Complete-Transaction, zobrazí se jednoduchý příkaz dir (Get-ChildItem) registru bez nového klíče.
Nicméně, když přidáte UseTransaction parametr do příkazu dir, příkaz se stane součástí transakce a získá položky v transakci, i když ještě nejsou přidány do dat.
Parametry
-Confirm
Před spuštěním rutiny vás vyzve k potvrzení.
Typ: | SwitchParameter |
Aliasy: | cf |
Position: | Named |
Default value: | False |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-WhatIf
Ukazuje, co se stane, když se rutina spustí. Rutina se nespustí.
Typ: | SwitchParameter |
Aliasy: | wi |
Position: | Named |
Default value: | False |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
Vstupy
None
Do této rutiny nelze vést objekty.
Výstupy
None
Tato rutina negeneruje žádný výstup.
Poznámky
Transakce, která byla potvrzena, nelze vrátit zpět nebo potvrdit transakci, která byla vrácena zpět.
Nelze vrátit zpět žádnou transakci jinou než aktivní transakci. Chcete-li vrátit zpět jinou transakci, musíte nejprve potvrdit nebo vrátit zpět aktivní transakci.
Ve výchozím nastavení platí, že pokud jakoukoli část transakce nelze potvrdit, například když příkaz v transakci způsobí chybu, celá transakce se vrátí zpět.