Complete-Transaction
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
Conceptos
about_Transactions
Start-Transaction
Get-Transaction
Undo-Transaction
Use-Transaction