Complete-Transaction
Confirma la transacción activa.
Sintaxis
Complete-Transaction
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
El cmdlet Complete-Transaction confirma una transacción activa. Al confirmar 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, debe escribir una comando Complete-Transaction para cada comando de Start-Transaction.
El cmdlet Complete-Transaction 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
PS C:\> 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 {}
En este ejemplo se muestra lo que sucede cuando se usa el cmdlet Complete-Transaction para confirmar una transacción.
El comando Start-Transaction inicia la transacción. El comando New-Item usa el parámetro UseTransaction para incluir el comando en la transacción.
El primer comando dir (Get-ChildItem) muestra que el nuevo elemento aún no se ha agregado al Registro.
El comando Complete-Transaction confirma la transacción, lo que hace que el registro cambie en vigor. Como resultado, el segundo comando dir muestra que se cambia el registro.
Ejemplo 2: Confirmar una transacción que tenga más de un suscriptor
PS C:\> 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}
En este ejemplo se muestra cómo usar Complete-Transaction para confirmar una transacción que tenga más de un suscriptor.
Para confirmar una transacción de varios suscriptores, debe escribir una comando Complete-Transaction para cada comando Start-Transaction. Los datos solo se cambian cuando se envía el comando final Complete-Transaction.
Para fines de demostración, en este ejemplo se muestra una serie de comandos especificados en la línea de comandos. En la práctica, es probable que las transacciones se ejecuten en scripts, con la transacción secundaria que ejecuta una función o un script auxiliar al que llama 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 cmdlet New-Item
Un segundo comando Start-Transaction agrega un segundo suscriptor a la transacción existente. El cmdlet Get-Transaction confirma que el número 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 número de suscriptores en 1. Esto se confirma mediante un comando Get-Transaction. Sin embargo, no se cambia ningún dato, como se evidencia en un comando dir m* (comando Get-ChildItem).
El segundo comando Complete-Transaction confirma toda la transacción y cambia los datos del Registro. Esto se confirma mediante un segundo comando dir m*, que muestra los cambios.
Ejemplo 3: Realizar una transacción que no cambie ningún dato
PS C:\> 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
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 comando Get-* en una transacción, obtiene los objetos que forman parte de la transacción. Esto le permite obtener una vista previa de los cambios en la transacción antes de confirmar los 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 comando Complete-Transaction
Sin embargo, al agregar el parámetro UseTransaction al comando dir, el comando se convierte en parte de la transacción y obtiene los elementos de la transacción incluso si aún no se agregan a los datos.
Parámetros
-Confirm
Le pide 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 el cmdlet se ejecuta. 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 ninguna salida.
Notas
No se puede revertir una transacción confirmada o confirmar una transacción que se ha revertido.
No se puede revertir ninguna transacción que no sea la transacción activa. Para revertir una transacción diferente, primero debe confirmar o revertir la transacción activa.
De forma predeterminada, si no se puede confirmar alguna parte de una transacción, como cuando un comando de la transacción produce un error, se revierte toda la transacción.