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 nessa 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 Complete-Transaction
comando para cada Start-Transaction
comando.
O Complete-Transaction
cmdlet faz parte de um conjunto de cmdlets que oferecem 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 registro.
O Complete-Transaction
comando confirma a transação, o que torna a alteração do registro efetiva. Como resultado, o segundo Get-ChildItem
comando mostra que o registro foi alterado.
Exemplo 2: Confirmar uma transação que tem 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 tem 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, transações provavelmente serão 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, conforme 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 de usar 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 a você visualizar as alterações na transação antes de confirmá-las.
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 sua 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
Não é possível transferir objetos para esse cmdlet.
Saídas
None
Este cmdlet não gera saída.
Observações
Você não pode reverter uma transação que foi confirmada, nem confirmar uma transação que foi revertida.
Você não pode reverter uma 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 pode ser confirmada, como por exemplo quando um comando na transação resulta em um erro, a transação inteira é revertida.