Compartilhar via


Complete-Transaction

Confirma a transação ativa.

Sintaxe

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

Description

O cmdlet de transação completa 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ê deverá inserir um comando Complete-Transaction para cada comando Start-Transaction.

O cmdlet complete-transaction é um 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

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

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

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

O primeiro comando dir (Get-ChildItem) mostra que o novo item ainda não foi adicionado ao registro.

O comando Complete-Transaction confirma a transação, o que torna a alteração do Registro eficaz. Como resultado, o segundo comando dir mostra que o registro foi alterado.

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

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}

Este exemplo mostra como usar de Transação Completa para confirmar uma transação que tenha mais de um assinante.

Para confirmar uma transação de vários assinantes, insira um comando Complete-Transaction para cada comando de Start-Transaction. 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 comando Start-Transaction inicia a transação. Um comando New-Item com o parâmetro UseTransaction adiciona a chave MyCompany à chave software. Embora o cmdlet New-Item retorne um objeto de chave, os dados no registro ainda não foram alterados.

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

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

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

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

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

Este exemplo mostra o valor do uso de comandos Get-* e outros comandos que não alteram dados em uma transação. Quando um comando Get-* é 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 comando Complete-Transaction seja executado, um comando dir simples (Get-ChildItem) mostra o registro sem a nova chave.

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

Parâmetros

-Confirm

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

Tipo:SwitchParameter
Aliases:cf
Cargo:Named
Valor padrão:False
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-WhatIf

Mostra o que aconteceria se o cmdlet fosse executado. O cmdlet não é executado.

Tipo:SwitchParameter
Aliases:wi
Cargo:Named
Valor padrão:False
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

Entradas

None

Você não pode redirecionar objetos para este cmdlet.

Saídas

None

Esse cmdlet não gera nenhuma saída.

Observações

  • Você não pode reverter uma transação confirmada ou confirmar uma transação que foi revertida.

    Você não pode reverter qualquer transação que não seja a transação ativa. Para reverter uma transação diferente, primeiro você deve 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.