Sdílet prostřednictvím


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.