Use-Transaction

将脚本块添加到活动事务。

语法

Use-Transaction
   [-TransactedScript] <ScriptBlock>
   [-UseTransaction]
   [<CommonParameters>]

说明

Use-Transaction cmdlet 将脚本块添加到活动事务。 这使你能够使用启用了事务的Microsoft .NET Framework 对象执行事务处理脚本。 脚本块只能包含启用事务的 .NET Framework 对象,例如 Microsoft.PowerShell.Commands.Management.TransactedString 类的实例。

使用此 cmdlet 时,UseTransaction 参数是可选的。

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

示例

示例 1:使用启用了事务的对象编写脚本

PS C:\> Start-Transaction
PS C:\> $transactedString = New-Object Microsoft.PowerShell.Commands.Management.TransactedString
PS C:\> $transactedString.Append("Hello")
PS C:\> Use-Transaction -TransactedScript { $transactedString.Append(", World") } -UseTransaction
PS C:\> $transactedString.ToString()
Hello
PS C:\> Use-Transaction -TransactedScript { $transactedString.ToString() } -UseTransaction
Hello, World
PS C:\> Complete-Transaction
PS C:\> $transactedString.ToString()
Hello, World

此示例演示如何使用 Use-Transaction 针对启用事务的 .NET Framework 对象编写脚本。 在本例中,该对象是一个 TransactedString 对象。

第一个命令使用 Start-Transaction cmdlet 启动事务。

第二个命令使用 New-Object 命令创建 TransactedString 对象。 它将对象存储在 $TransactedString 变量中。

第三个和第四个命令都使用 TransactedString 对象的 Append 方法将文本添加到 $TransactedString 的值中。 一个命令是事务的一部分。 另一个命令不是。

第三个命令使用事务处理字符串的 Append 方法将 Hello 添加到 $TransactedString 的值。 由于命令不是事务的一部分,因此将立即应用更改。

第四个命令使用 Use-Transaction 将文本添加到事务中的字符串中。 该命令使用 Append 方法将 “, World” 添加到 $TransactedString 的值。 该命令括在大括号 ( {} ) 中,使其成为脚本块。 此命令中需要 UseTransaction 参数。

第五和第六个命令使用 TransactedString 对象的 ToString 方法将 TransactedString 的值显示为字符串。 同样,一个命令是事务的一部分。 另一个事务不是。

第五个命令使用 ToString 方法显示$TransactedString变量的当前值。 由于它不是事务的一部分,因此它仅显示字符串的当前状态。

第六个命令使用 Use-Transaction 在事务中运行相同的命令。 由于该命令是事务的一部分,因此它在事务中显示字符串的当前值,这与事务更改的预览非常类似。

第七个命令使用 Complete-Transaction cmdlet 提交事务。

最后一个命令使用 ToString 方法将变量的结果值显示为字符串。

示例 2:回滚事务

PS C:\> Start-Transaction
PS C:\> $transactedString = New-Object Microsoft.PowerShell.Commands.Management.TransactedString
PS C:\> $transactedString.Append("Hello")
PS C:\> Use-Transaction -TransactedScript { $transactedString.Append(", World") } -UseTransaction
PS C:\> Undo-Transaction
PS C:\> $transactedString.ToString()
Hello

此示例显示了回滚包含 Use-Transaction 命令的事务的效果。 与事务中的所有命令一样,在回滚事务时,将放弃事务处理更改,并且数据保持不变。

第一个命令使用 Start-Transaction 启动事务。

第二个命令使用 New-Object 创建 TransactedString 对象。 它将对象存储在 $TransactedString 变量中。

第三个命令(不是事务的一部分)使用 Append 方法将 “Hello” 添加到 $TransactedString 的值。

第四个命令使用 Use-Transaction 运行另一个在事务中使用 Append 方法的命令。 该命令使用 Append 方法将 “, World” 添加到 $TransactedString 的值。

第五个命令使用 Undo-Transaction cmdlet 回滚事务。 因此,在事务中执行的所有命令都是相反的。

最后一个命令使用 ToString 方法将 $TransactedString 的结果值显示为字符串。 结果显示,仅对对象应用了事务外部所做的更改。

参数

-TransactedScript

指定在事务中运行的脚本块。 输入用大括号 ( { } ) 括起来的任何有效脚本块。 此参数是必需的。

类型:ScriptBlock
Position:0
默认值:None
必需:True
接受管道输入:False
接受通配符:False

-UseTransaction

在活动事务中包含该命令。 此参数仅在事务正在进行时有效。 有关详细信息,请参阅about_Transactions。

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

输入

None

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

输出

PSObject

此 cmdlet 返回事务的结果。

备注

  • UseTransaction 参数包括活动事务中的命令。 由于 Use-Transaction cmdlet 始终在事务中使用,因此需要此参数才能使任何 Use-Transaction 命令生效。