Undo-Transaction

回滚活动事务。

语法

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

说明

Undo-Transaction cmdlet 回滚活动事务。 回滚事务时,由事务中的命令所做的更改将被丢弃,数据将还原到其原始形式。

如果事务包含多个订阅者,则 Undo-Transaction 命令将为所有订阅者回滚整个事务。

默认情况下,如果事务中的任何命令发生错误,事务都会自动回滚。 但是,可以使用不同的回滚首选项启动事务,并且你可以使用此 cmdlet 随时回滚活动事务。

Undo-Transaction cmdlet 是 Windows PowerShell 中支持事务功能的一组 cmdlet 之一。 有关详细信息,请参阅 about_Transactions

示例

示例 1:回滚当前事务

Undo-Transaction

此命令回滚当前活动事务。

示例 2:启动并回滚事务

Set-Location hkcu:\software
Start-Transaction
New-Item -Path "ContosoCompany" -UseTransaction
Undo-Transaction

此示例先启动一项事务,然后回滚它。 因此未对注册表进行更改。

示例 3:回滚所有订阅者的事务

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

此示例演示了当任何订阅者回滚事务时,将为所有订阅者回滚整个事务。

第一条命令将位置更改为 HKCU:\Software 注册表项。

第二条命令启动事务。

第三条命令使用 New-Item cmdlet 创建新的注册表项。 该命令使用 UseTransaction 参数包含在该事务中所做的更改。

第四条命令使用 Get-Transaction cmdlet 获取活动事务。 你会看到状态为 Active,订阅者计数为 1。

第五条命令再次使用 Start-Transaction 命令。 通常,如果主事务使用的脚本包含其自己的完整事务,则会在某一事务正在执行期间启动另一个事务。 此示例以交互方式执行,便于分阶段检查。 如果在另一个事务正在执行时运行 Start-Transaction 命令,该命令将作为新的订阅者加入现有事务,并且订阅者计数将会递增。

第六条命令使用 Get-Transaction cmdlet 获取活动事务。 你会看到此时订阅者计数为 2。

第七条命令使用 Undo-Transaction 回滚事务。 此命令不返回任何对象。

最后一条命令是获取活动事务(在本例中为最近活动的事务)的 Get-Transaction 命令。 结果显示事务已回滚并且订阅者计数为 0,这表明已为所有订阅者回滚事务。

参数

-Confirm

提示你在运行 cmdlet 之前进行确认。

类型:SwitchParameter
别名:cf
Position:Named
默认值:False
必需:False
接受管道输入:False
接受通配符:False

-WhatIf

显示运行该 cmdlet 时会发生什么情况。 cmdlet 未运行。

类型:SwitchParameter
别名:wi
Position:Named
默认值:False
必需:False
接受管道输入:False
接受通配符:False

输入

None

不能通过管道将输入传递给此 cmdlet。

输出

None

此 cmdlet 不返回任何输出。

备注

  • 不能回滚已提交的事务。

    不能回滚活动事务之外的任何事务。 若要回滚其他独立事务,则必须先提交或回滚活动事务。

    回滚事务将会终止该事务。 若要再次使用事务,则必须启动新事务。