Complete-Transaction

Confirma a transação ativa.

Sintaxe

Complete-Transaction
        [-WhatIf]
        [-Confirm]
        [<CommonParameters>]

Description

O Complete-Transaction cmdlet confirma uma transação ativa. Quando você confirma uma transação, os comandos na transação são finalizados e os dados afetados pelos comandos são alterados.

Se a transação incluir vários assinantes, para confirmar a transação, você deve inserir um Complete-Transaction comando para cada Start-Transaction comando.

O Complete-Transaction cmdlet faz parte de um conjunto de cmdlets que dão suporte ao recurso de transações no Windows PowerShell. Para obter mais informações, consulte about_Transactions.

Exemplos

Exemplo 1: Confirmar uma transação

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                      {}

Este exemplo mostra o que acontece quando você usa o Complete-Transaction cmdlet para confirmar uma transação.

O Start-Transaction comando inicia a transação. O comando New-Item usa o parâmetro UseTransaction para incluir o comando na transação.

O primeiro Get-ChildItem comando mostra que o novo item ainda não foi adicionado ao registo.

O Complete-Transaction comando confirma a transação, o que torna efetiva a alteração do registro. Como resultado, o segundo Get-ChildItem comando mostra que o registro é alterado.

Exemplo 2: Confirmar uma transação que tenha mais de um assinante

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}

Este exemplo mostra como usar Complete-Transaction para confirmar uma transação que tenha mais de um assinante.

Para confirmar uma transação de vários assinantes, você deve inserir um Complete-Transaction comando para cada Start-Transaction comando. Os dados são alterados somente quando o comando final Complete-Transaction é enviado.

Para fins de demonstração, este exemplo mostra uma série de comandos inseridos na linha de comando. Na prática, é provável que as transações sejam executadas em scripts, com a transação secundária sendo executada por uma função ou script auxiliar que é chamado pelo script principal.

Neste exemplo, um Start-Transaction comando inicia a transação. Um New-Item comando com o parâmetro UseTransaction adiciona a chave MyCompany à chave Software. Embora o New-Item cmdlet retorne um objeto de chave, os dados no Registro ainda não foram alterados.

Um segundo Start-Transaction comando adiciona um segundo assinante à transação existente. O Get-Transaction cmdlet confirma que a contagem de assinantes é 2. Um comando New-ItemProperty com o parâmetro UseTransaction adiciona uma entrada do Registro à nova chave MyCompany. Novamente, o comando retorna um valor, mas o registro não é alterado.

O primeiro Complete-Transaction comando reduz a contagem de assinantes em 1. Isso é confirmado por um Get-Transaction comando. No entanto, nenhum dado é alterado, como evidenciado por um Get-ChildItem m* comando.

O segundo Complete-Transaction comando confirma toda a transação e altera os dados no registro. Isso é confirmado por um segundo Get-ChildItem m* comando, que mostra as alterações.

Exemplo 3: Executar uma transação que não altera nenhum dado

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

Este exemplo mostra o valor do uso de comandos Get-* e outros comandos que não alteram dados em uma transação. Quando um Get-\* comando é usado em uma transação, ele obtém os objetos que fazem parte da transação. Isso permite que você visualize as alterações na transação antes que as alterações sejam confirmadas.

Neste exemplo, uma transação é iniciada. Um comando New-Item com o parâmetro UseTransaction adiciona uma nova chave ao Registro como parte da transação.

Como a nova chave do Registro não é adicionada ao Registro até que o Complete-Transaction comando seja executado, um comando simples Get-ChildItem mostra o Registro sem a nova chave.

No entanto, quando você adiciona o parâmetro UseTransaction ao Get-ChildItem comando, o comando se torna parte da transação e obtém os itens na transação, mesmo que eles ainda não tenham sido adicionados aos dados.

Parâmetros

-Confirm

Solicita a sua confirmação antes de executar o cmdlet.

Tipo:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Necessário:False
Aceitar entrada de pipeline:False
Aceitar carateres universais:False

-WhatIf

Apresenta o que aconteceria mediante a execução do cmdlet. O cmdlet não é executado.

Tipo:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Necessário:False
Aceitar entrada de pipeline:False
Aceitar carateres universais:False

Entradas

None

Não é possível canalizar objetos para este cmdlet.

Saídas

None

Este cmdlet não gera nenhuma saída.

Notas

  • Não é possível reverter uma transação que foi confirmada ou confirmar uma transação que foi revertida.

    Não é possível reverter nenhuma transação que não seja a transação ativa. Para reverter uma transação diferente, você deve primeiro confirmar ou reverter a transação ativa.

    Por padrão, se qualquer parte de uma transação não puder ser confirmada, como quando um comando na transação resultar em um erro, toda a transação será revertida.