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 zahrnuje více odběratelů, k potvrzení transakce, musíte zadat jeden Complete-Transaction
příkaz pro každý Start-Transaction
příkaz.
Tato 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
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 {}
Tento příklad ukazuje, co se stane, když k potvrzení transakce použijete Complete-Transaction
rutinu.
Příkaz Start-Transaction
spustí transakci. Příkaz New-Item používá parametr UseTransaction k zahrnutí příkazu do transakce.
První Get-ChildItem
příkaz ukazuje, že nová položka ještě nebyla přidána do registru.
Příkaz Complete-Transaction
potvrdí transakci, která provede změnu registru efektivní. V důsledku toho druhý Get-ChildItem
příkaz ukazuje, že se registr změnil.
Příklad 2: Potvrzení transakce, která má více než jednoho odběratele
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}
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 při odeslání konečného Complete-Transaction
příkazu.
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 transakci. 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ý Start-Transaction
příkaz přidá k existující transakci druhý odběratel. Rutina Get-Transaction
potvrdí, ž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 sníží počet odběratelů o 1. To je potvrzeno příkazem Get-Transaction
. Žádná data se ale nezmění, jak to dokládá Get-ChildItem m*
příkaz.
Druhý Complete-Transaction
příkaz potvrdí celou transakci a změní data v registru. To je potvrzeno druhým Get-ChildItem m*
příkazem, který zobrazuje změny.
Příklad 3: Provedení transakce, která nemění žádná 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
Tento příklad ukazuje hodnotu použití příkazů Get-* a dalších příkazů, které nemění data v transakci. Pokud je Get-\*
příkaz 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.
Protože nový klíč registru není přidán do registru, dokud Complete-Transaction
se příkaz nespustí, jednoduchý Get-ChildItem
příkaz zobrazí registr bez nového klíče.
Nicméně, když přidáte UseTransaction parametr do Get-ChildItem
příkazu, 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 zobrazí výzvu 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
Zobrazuje, co by se stalo při spuštění rutiny. Rutina není spuštěna.
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.