Get-Transaction

获取当前(活动)事务。

语法

Get-Transaction []

说明

Get-Transaction cmdlet 获取一个对象,该对象表示会话中的当前事务。

此 cmdlet 永远不会返回多个对象,因为一次只有一个事务处于活动状态。 如果启动一个或多个独立事务(通过使用 Start-Transaction的“独立”参数),则最近启动的事务处于活动状态,即 Get-Transaction 返回的事务。

回滚或提交所有活动事务后,此 cmdlet 会显示会话中最近处于活动状态的事务。

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

示例

示例 1:获取当前事务

Start-Transaction
Get-Transaction

RollbackPreference   SubscriberCount   Status
------------------   ---------------   ------
Error                1                 Active

此命令使用 Get-Transaction cmdlet 获取当前事务。

示例 2:显示事务对象的属性和方法

Get-Transaction | Get-Member

Name               MemberType Definition
----               ---------- ----------
Dispose            Method     System.Void Dispose(), System.Void Dispose(Boolean disposing)
Equals             Method     System.Boolean Equals(Object obj)
GetHashCode        Method     System.Int32 GetHashCode()
GetType            Method     System.Type GetType()
ToString           Method     System.String ToString()
IsCommitted        Property   System.Boolean IsCommitted {get;}
IsRolledBack       Property   System.Boolean IsRolledBack {get;}
RollbackPreference Property   System.Management.Automation.RollbackSeverity RollbackPreference {get;}
SubscriberCount    Property   System.Int32 SubscriberCount {get;set;}

此命令使用 Get-Member cmdlet 来显示事务对象的属性和方法。

示例 3:显示回滚事务的属性值

Set-Location hklm:\software
Start-Transaction
New-Item MyCompany -UseTransaction
Undo-Transaction
Get-Transaction

RollbackPreference   SubscriberCount   Status
------------------   ---------------   ----------
Error                0                 RolledBack

此命令显示已回滚的事务的事务对象的属性值。

示例 4:显示已提交的事务的属性值

Set-Location hklm:\software
Start-Transaction
New-Item MyCompany -UseTransaction
Complete-Transaction
Get-Transaction

RollbackPreference   SubscriberCount   Status
------------------   ---------------   ---------
Error                1                 Committed

此命令显示已提交的事务的事务对象的属性值。

示例 5:在另一个事务正在进行时启动事务

Set-Location hklm:\software
Start-Transaction
New-Item MyCompany -UseTransaction
Start-Transaction
New-Item MyCompany2 -UseTransaction
Get-Transaction

RollbackPreference   SubscriberCount   Status
------------------   ---------------   ------
Error                2                 Active

Complete-Transaction
Get-Transaction

RollbackPreference   SubscriberCount   Status
------------------   ---------------   ------
Error                1                 Active

Complete-Transaction
Get-Transaction

RollbackPreference   SubscriberCount   Status
------------------   ---------------   ---------
Error                1                 Committed

本示例显示当另一个事务正在进行时启动事务的事务对象的影响。 通常,当运行事务的脚本包含函数或调用包含另一个完整事务的脚本时,就会发生这种情况。

除非第二个 Start-Transaction 命令包含 Independent 参数,否则 Start-Transaction 不会创建新事务。 而是将第二个订阅服务器添加到原始事务。

第一个 Start-Transaction 命令启动事务。 具有 UseTransaction 参数的 New-Item 命令是事务的一部分。

第二个 Start-Transaction 命令将订阅服务器添加到事务中。 下一个 New-Item 命令也是事务的一部分。

第一个 Get-Transaction 命令显示多订阅服务器事务。 请注意,订阅服务器计数为 2。

第一个 Complete-Transaction 命令不会提交事务,但它会将订阅服务器计数减少到 1。

第二个 Complete-Transaction 命令提交事务。

示例 6:启动独立事务,而另一个事务正在进行中

Set-Location hklm:\software
Start-Transaction
Get-Transaction

RollbackPreference   SubscriberCount   IsRolledBack   IsCommitted
------------------   ---------------   ------------   -----------
Error                1                 False          False

Start-Transaction -Independent
Get-Transaction

RollbackPreference   SubscriberCount   IsRolledBack   IsCommitted
------------------   ---------------   ------------   -----------
Error                1                 False          False

Complete-Transaction
Get-Transaction
Complete-Transaction
Get-Transaction

本示例显示在另一个事务正在进行时启动独立事务的事务对象的影响。

第一个 Start-Transaction 命令启动事务。 具有 UseTransaction 参数的 New-Item 命令是事务的一部分。

第二个 Start-Transaction 命令将订阅服务器添加到事务中。 下一个 New-Item 命令也是事务的一部分。

第一个 Get-Transaction 命令显示多订阅服务器事务。 请注意,订阅服务器计数为 2。

Complete-Transaction 命令将订阅服务器计数减少到 1,但不会提交事务。

第二个 Complete-Transaction 命令提交事务。

输入

None

不能通过管道将对象传递给此 cmdlet。

输出

PSTransaction

此 cmdlet 返回一个表示当前事务的对象。