Undo-Transaction
Rolls back the active transaction.
Syntax
Undo-Transaction
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
The Undo-Transaction
cmdlet rolls back the active transaction. When you roll back a transaction,
the changes that were made by the commands in the transaction are discarded and the data is restored
to its original form.
If the transaction includes multiple subscribers, an Undo-Transaction
command rolls back the whole
transaction for all subscribers.
By default, transactions are rolled back automatically if any command in the transaction generates an error. However, transactions can be started by using a different rollback preference and you can use this cmdlet to roll back the active transaction at any time.
The Undo-Transaction
cmdlet is one of a set of cmdlets that support the transactions feature in
Windows PowerShell. For more information, see about_Transactions.
Examples
Example 1: Roll back the current transaction
Undo-Transaction
This command rolls back the current, active, transaction.
Example 2: Start and roll back a transaction
Set-Location hkcu:\software
Start-Transaction
New-Item -Path "ContosoCompany" -UseTransaction
Undo-Transaction
This example starts a transaction and then rolls it back. As a result, no changes are made to the registry.
Example 3: Roll back a transaction for all subscribers
Set-Location hkcu:\software
Start-Transaction
New-Item -Path "ContosoCompany" -UseTransaction
Get-Transaction
RollbackPreference SubscriberCount Status
------------------ --------------- -----
Error 1 Active
Start-Transaction
Get-Transaction
RollbackPreference SubscriberCount Status
------------------ --------------- -----
Error 2 Active
Undo-Transaction
Get-Transaction
RollbackPreference SubscriberCount Status
------------------ --------------- -----
Error 0 RolledBack
This example demonstrates that when any subscriber rolls back a transaction, the whole transaction is rolled back for all subscribers.
The first command changes the location to the HKCU:\Software
registry key.
The second command starts a transaction.
The third command uses the New-Item
cmdlet to create a new registry key. The command uses the
UseTransaction parameter to include the change in the transaction.
The fourth command uses the Get-Transaction
cmdlet to get the active transaction. Notice that the
status is Active and the subscriber count is 1.
The fifth command uses the Start-Transaction
command again. Typically, starting a transaction
while another transaction is in progress occurs when a script that is used by the main transaction
includes its own complete transaction. This example is performed interactively so that you can
examine it in stages. When you run a Start-Transaction
command while another transaction is in
progress, the commands join the existing transaction as a new subscriber and the subscriber count is
incremented.
The sixth command uses the Get-Transaction
cmdlet to get the active transaction. Notice that the
subscriber count is now 2.
The seventh command uses Undo-Transaction
to roll back the transaction. This command does not
return any objects.
The final command is a Get-Transaction
command that gets the active, or in this case, the most
recently active, transaction. The results show that the transaction is rolled back, and that the
subscriber count is 0, showing that the transaction was rolled back for all subscribers.
Parameters
-Confirm
Prompts you for confirmation before running the cmdlet.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WhatIf
Shows what would happen if the cmdlet runs. The cmdlet is not run.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Inputs
None
You cannot pipe input to this cmdlet.
Outputs
None
This cmdlet does not return any output.
Notes
You cannot roll back a transaction that has been committed.
You cannot roll back any transaction other than the active transaction. To roll back a different, independent transaction, you must first commit or roll back the active transaction.
Rolling back the transaction ends the transaction. To use a transaction again, you must start a new transaction.