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.