Confirma la transacción activa.

Sintaxis

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

Descripción

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

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

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

Parámetros

-Confirm

Solicita confirmación antes de ejecutar el comando.

¿Requerido?

false

¿Posición?

named

Valor predeterminado

¿Aceptar canalización?

false

¿Aceptar caracteres comodín?

false

-WhatIf

Describe lo que ocurriría si ejecutara el comando sin ejecutarlo realmente.

¿Requerido?

false

¿Posición?

named

Valor predeterminado

¿Aceptar canalización?

false

¿Aceptar caracteres comodín?

false

<CommonParameters>

Este cmdlet admite los parámetros comunes: -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer y -OutVariable. Para obtener más información, vea about_Commonparameters.

Entradas y salidas

El tipo de entrada es el tipo de los objetos que se pueden canalizar al cmdlet. El tipo devuelto es el tipo de los objetos que el cmdlet devuelve.

Entradas

Ninguno

No se pueden canalizar objetos a Complete-Transaction.

Salidas

Ninguno

Este cmdlet no devuelve objetos.

Notas

No se puede revertir una transacción confirmada ni confirmar una transacción revertida.

No se puede revertir una transacción distinta de 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 una transacción no se puede confirmar, como cuando un comando de la transacción produce un error, la transacción completa se revierte.

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

Descripción
-----------
En este ejemplo se muestra el efecto de utilizar el cmdlet Complete-Transaction para confirmar una transacción.

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

El primer comando "dir" (Get-ChildItem) muestra que el nuevo elemento no se ha agregado todavía al Registro.

El comando Complete-Transaction confirma la transacción, lo que hace que el cambio del Registro surta efecto. Como consecuencia, el segundo comando "dir" muestra que el Registro ha cambiado.






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

Descripción
-----------
En este ejemplo se muestra la forma de utilizar Complete-Transaction para confirmar una transacción con más de un suscriptor. 

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

A efectos de demostración, en este ejemplo se muestra una serie de comandos escritos en la línea de comandos. En la práctica, lo más probable es que las transacciones se ejecuten en scripts, siendo ejecutada la transacción por una función o un script auxiliar invocado por el script principal.

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

Un segundo comando Start-Transaction agrega un segundo suscriptor a la transacción existente. El comando Get-Transaction 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. De nuevo, el comando devuelve un valor, pero no se cambia el Registro.

El primer comando Complete-Transaction reduce el recuento de suscriptores en 1. Un comando Get-Transaction confirma este punto. Sin embargo, no se cambian datos, tal como evidencia un comando "dir m*" (Get-ChildItem).

El segundo comando Complete-Transaction confirma la transacción completa y cambia los datos en el Registro. Un segundo comando "dir m*", que muestra los cambios, confirma este punto.






Ejemplo 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

Descripción
-----------
En este ejemplo se muestra el valor de utilizar comandos Get-*, y otros comandos que no cambian datos, en una transacción. Cuando se utiliza un comando Get-* en una transacción, obtiene los objetos que forman parte de la transacción. Esto permite tener una vista previa de los cambios de la transacción antes de que se confirmen.

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 ejecute el comando Complete-Transaction, un comando "dir" simple (Get-ChildItem) muestra el Registro sin la nueva clave. 

Sin embargo, cuando se agrega el parámetro UseTransaction al comando "dir", el comando pasa a formar parte de la transacción y obtiene los elementos de la transacción aunque no se hayan agregado todavía a los datos.






Vea también




Tabla de contenido