Confirma a transação ativa.

Sintaxe

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

Descrição

O cmdlet Complete-Transaction 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 comando Complete-Transaction para cada comando Start-Transaction.

O cmdlet Complete-Transaction 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.

Parâmetros

-Confirm

Solicita confirmação antes da execução do comando.

Necessário?

false

Posição?

named

Valor padrão

Aceitar entrada do pipeline?

false

Aceitar caracteres curinga?

false

-WhatIf

Descreve o que aconteceria se você executasse o comando, sem executá-lo de fato.

Necessário?

false

Posição?

named

Valor padrão

Aceitar entrada do pipeline?

false

Aceitar caracteres curinga?

false

<CommonParameters>

Esse cmdlet oferece suporte aos parâmetros comuns: -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer e -OutVariable. Para obter mais informações, consulte about_Commonparameters.

Entradas e saídas

O tipo de entrada é o tipo dos objetos que você pode canalizar para o cmdlet. O tipo de retorno é o tipo dos objetos que o cmdlet retorna.

Entradas

None

Não é possível enviar objetos para Complete-Transaction.

Saídas

None

Este cmdlet não retorna nenhum objeto.

Observações

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

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

Por padrão, se não for possível confirmar qualquer parte de uma transação, por exemplo, quando um comando na transação resulta em erro, toda a transação será revertida.

Exemplo 1

C:\PS>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                      {}

Descrição
-----------
Este exemplo mostra o efeito do uso do 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 efetiva a alteração do Registro. Como resultado, o segundo comando "dir" mostra que o Registro foi alterado.






Exemplo 2

C:\PS>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}

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

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

Para fins de demonstração, este exemplo mostra uma série de comandos inseridos na linha de comando. Na prática, as transações provavelmente serão executadas em scripts, com a transação secundária sendo executada por uma função ou um script auxiliar 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 comando 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 comando Get-Transaction 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 ainda não foi alterado.

O primeiro comando Complete-Transaction reduz a contagem de assinantes em 1. Isso é conformado por um comando Get-Transaction. No entanto, nenhum dado é alterado, como fica evidente pelo comando "dir m*" (Get-ChildItem).

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






Exemplo 3

C:\PS>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

Descrição
-----------
Este exemplo mostra o valor do uso de comandos Get-*, e de 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 elas 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 enquanto o comando Complete-Transaction não é executado, um comando "dir" (Get-ChildItem) simples mostra o Registro sem a nova chave. 

No entanto, quando você adiciona o parâmetro UseTransaction ao comando "dir", o comando passa a fazer parte da transação e obtém os itens na transação, mesmo que ainda não tenham sido adicionados aos dados.






See Also




Sumário