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