Compartir a través de


Complete-Transaction

Confirma la transacción activa.

Sintaxis

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

Description

El Complete-Transaction cmdlet confirma una transacción activa. Cuando se confirma una transacción, los comandos de la transacción finalizan y se modifican los datos afectados por los comandos.

Si la transacción incluye varios suscriptores, para confirmar la transacción, debe escribir un Complete-Transaction comando para cada Start-Transaction comando.

El Complete-Transaction cmdlet es uno de los conjuntos de cmdlets que admiten la característica de transacciones en Windows PowerShell. Para obtener más información, consulte about_Transactions.

Ejemplos

Ejemplo 1: Confirmar una transacción

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

En este ejemplo se muestra lo que sucede cuando se usa el Complete-Transaction cmdlet para confirmar una transacción.

El Start-Transaction comando inicia la transacción. El comando New-Item usa el parámetro UseTransaction para incluir el comando en la transacción.

El primer Get-ChildItem comando muestra que el nuevo elemento aún no se ha agregado al Registro.

El Complete-Transaction comando confirma la transacción, lo que hace que el registro cambie en vigor. Como resultado, el segundo Get-ChildItem comando muestra que se cambia el registro.

Ejemplo 2: Confirmar una transacción que tenga más de un suscriptor

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}

En este ejemplo se muestra cómo usar Complete-Transaction para confirmar una transacción que tiene más de un suscriptor.

Para confirmar una transacción de varios suscriptores, debe escribir un Complete-Transaction comando para cada Start-Transaction comando. Los datos solo se cambian cuando se envía el comando final Complete-Transaction .

A efectos de demostración, este ejemplo muestra una serie de comandos escritos en la línea de comandos. En la práctica, es probable que las transacciones se ejecuten en scripts, con la transacción secundaria ejecutada por una función o un script del asistente al que se invoca mediante el script principal.

En este ejemplo, un Start-Transaction comando inicia la transacción. Un New-Item comando con el parámetro UseTransaction agrega la clave MyCompany a la clave software. Aunque el New-Item cmdlet devuelve un objeto de clave, los datos del Registro aún no se cambian.

Un segundo comando agrega un segundo Start-Transaction suscriptor a la transacción existente. El Get-Transaction cmdlet confirma que el recuento de suscriptores es 2. Un comando New-ItemProperty con el parámetro UseTransaction agrega una entrada del Registro a la nueva clave MyCompany. Nuevamente, el comando devuelve un valor, pero no se modifica el Registro.

El primer Complete-Transaction comando reduce el número de suscriptores en 1. Esto se confirma mediante un Get-Transaction comando. Sin embargo, no se cambia ningún dato, como se evidencia en un Get-ChildItem m* comando.

El segundo Complete-Transaction comando confirma toda la transacción y cambia los datos del Registro. Esto se confirma mediante un segundo Get-ChildItem m* comando, que muestra los cambios.

Ejemplo 3: Realizar una transacción que no cambie ningún dato

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

En este ejemplo se muestra el valor de usar comandos Get-* y otros comandos que no cambian los datos en una transacción. Cuando se usa un Get-\* comando en una transacción, obtiene los objetos que forman parte de la transacción. Esto ofrece una vista previa de los cambios en la transacción antes de confirmar dichos cambios.

En este ejemplo, se inicia una transacción. Un comando New-Item con el parámetro UseTransaction agrega una nueva clave al Registro como parte de la transacción.

Dado que la nueva clave del Registro no se agrega al Registro hasta que se ejecuta el Complete-Transaction comando, un comando simple Get-ChildItem muestra el registro sin la nueva clave.

Sin embargo, al agregar el parámetro UseTransaction al Get-ChildItem comando, el comando forma parte de la transacción y obtiene los elementos de la transacción aunque aún no se agreguen a los datos.

Parámetros

-Confirm

Le solicita su confirmación antes de ejecutar el cmdlet.

Tipo:SwitchParameter
Alias:cf
Posición:Named
Valor predeterminado:False
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-WhatIf

Muestra lo que sucedería si se ejecutara el cmdlet. El cmdlet no se ejecuta.

Tipo:SwitchParameter
Alias:wi
Posición:Named
Valor predeterminado:False
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

Entradas

None

No se pueden canalizar objetos a este cmdlet.

Salidas

None

Este cmdlet no genera ningún resultado.

Notas

  • No se puede revertir una transacción que se ha confirmado ni confirmar una transacción que se ha revertido.

    No se puede revertir una transacción que no sea la transacción activa. Para revertir una transacción diferente, primero se debe confirmar o revertir la transacción activa.

    De forma predeterminada, si una parte de la transacción no puede confirmarse —por ejemplo, cuando un comando de la transacción genera un error—, toda la transacción se revierte.