Use-Transaction
将脚本块添加到活动事务中。
语法
Use-Transaction [-TransactedScript] <scriptblock> [-UseTransaction] [<CommonParameters>]
说明
Use-Transaction cmdlet 将脚本块添加到活动事务中。这使您可以使用支持事务的 Microsoft .NET Framework 对象编写事务处理脚本。该脚本块只能包含支持事务的 .NET Framework 对象,如 Microsoft.PowerShell.Commands.Management.TransactedString 类的实例。
使用此 cmdlet 时,需要使用 UseTransaction 参数,此参数对于大多数 cmdlet 是可选的。
Use-Transaction cmdlet 是 Windows PowerShell 中支持事务功能的一组 cmdlet 之一。有关详细信息,请参阅 about_Transactions。
参数
-TransactedScript <scriptblock>
指定在事务中运行的脚本块。可输入用大括号 ( { } ) 括起的任何有效脚本块。此参数是必需的。
是否为必需? |
true |
位置? |
1 |
默认值 |
无 |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-UseTransaction
将命令包含在活动事务中。仅当正在执行事务时,此参数才有效。有关详细信息,请参阅 about_Transactions。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
<CommonParameters>
此 cmdlet 支持通用参数:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。有关详细信息,请参阅 about_Commonparameters.
输入和输出
输入类型是指可通过管道传递给 cmdlet 的对象的类型。返回类型是指 Cmdlet 所返回对象的类型。
输入 |
无 不能通过管道将输入传递给此 cmdlet。 |
输出 |
PSObject Use-Transaction 返回事务结果。 |
说明
Use-Transaction 参数将命令包含在活动事务中。由于 Use-Transaction cmdlet 始终用在事务中,因此任何 Use-Transaction 命令都需要使用此参数才能生效。
示例 1
C:\PS>start-transaction
C:\PS> $transactedString = New-Object Microsoft.PowerShell.Commands.Management.TransactedString
C:\PS> $transactedString.Append("Hello")
C:\PS> use-transaction -TransactedScript { $transactedString.Append(", World") } -UseTransaction
C:\PS> $transactedString.ToString()
Hello
C:\PS> use-transaction -transactedScript { $transactedString.ToString() } -UseTransaction
Hello, World
C:\PS> complete-transaction
C:\PS> $transactedString.ToString()
Hello, World
说明
-----------
此示例演示了如何使用 Use-Transaction cmdlet 为支持事务的 .NET Framework 对象撰写脚本。在本例中,该对象为 TransactedString 对象。
第一条命令使用 Start-Transaction cmdlet 启动事务。
第二条命令使用 New-Object 命令创建 TransactedString 对象。它将该对象存储在 $TransactedString 变量中。
第三条和第四条命令均使用 TransactedString 对象的 Append 方法将文本添加到 $TransactedString 的值中。其中一条命令包含在事务中;另一条命令则不包含在事务中。
第三条命令使用事务处理字符串的 Append 方法将“Hello”添加到 $TransactedString 的值中。由于该命令未包含在事务中,因此会立即应用所做更改。
第四条命令使用 Use-Transaction cmdlet 将文本添加到事务内的字符串中。该命令使用 Append 方法将“, World”添加到 $TransactedString 的值中。用大括号 ( {} ) 将命令括起来以形成脚本块。在此命令中需要使用 UseTransaction 参数。
第五条和第六条命令使用 TransactedString 对象的 ToString 方法将 TransactedString 的值显示为字符串。同样,其中一条命令包含在事务中;另一条命令则不包含在事务中。
第五条命令使用 ToString 方法显示 $TransactedString 变量的当前值。因为它未包含在事务中,所以它仅显示字符串的当前状态。
第六条命令使用 Use-Transaction cmdlet 在事务中运行同一命令。由于该命令包含在事务中,因此它会显示事务中字符串的当前值,这与预览事务更改非常类似。
第七条命令使用 Complete-Transaction cmdlet 提交事务。
最后一条命令使用 ToString 方法将变量的结果值显示为字符串。
示例 2
C:\PS>start-transaction
C:\PS> $transactedString = New-Object Microsoft.PowerShell.Commands.Management.TransactedString
C:\PS> $transactedString.Append("Hello")
C:\PS> use-transaction -TransactedScript { $transactedString.Append(", World") } -UseTransaction
C:\PS> undo-transaction
C:\PS> $transactedString.ToString()
Hello
说明
-----------
此示例演示了回滚包含 Use-Transaction 命令的事务的效果。与事务中的所有命令一样,当事务回滚后,事务型更改将被丢弃,而数据保持不变。
第一条命令使用 Start-Transaction cmdlet 启动事务。
第二条命令使用 New-Object 命令创建 TransactedString 对象。它将该对象存储在 $TransactedString 变量中。
第三条命令(未包含在事务中)使用 Append 方法将“Hello”添加到 $TransactedString 的值中。
第四条命令使用 Use-Transaction cmdlet 运行在事务中使用 Append 方法的另一个命令。该命令使用 Append 方法将“, World”添加到 $TransactedString 的值中。
第五条命令使用 Undo-Transaction cmdlet 回滚事务。因此在事务中执行的所有命令都将被恢复。
最后一条命令使用 ToString 方法将 $TransactedString 的结果值显示为字符串。结果显示只有在事务外部所做的更改才被应用于对象。
另请参阅
概念
about_Transactions
Start-Transaction
Get-Transaction
Complete-Transaction
Undo-Transaction