Complete-Transaction

Potvrdí aktivní transakci.

Syntax

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í.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

Zobrazuje, co by se stalo při spuštění rutiny. Rutina není spuštěna.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters: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.