Use-Transaction
Добавляет блок скрипта в активную транзакцию.
Синтаксис
Use-Transaction
[-TransactedScript] <ScriptBlock>
[-UseTransaction]
[<CommonParameters>]
Описание
Командлет Use-Transaction
добавляет блок скрипта в активную транзакцию. Это позволяет выполнять трансактированные скрипты с помощью объектов Microsoft .NET Framework с поддержкой транзакций. Блок скрипта может содержать только объекты .NET Framework с поддержкой транзакций, такие как экземпляры класса Microsoft.PowerShell.Commands.Management.TransactedString.
Параметр UseTransaction, который является необязательным для большинства командлетов, требуется при использовании этого командлета.
Use-Transaction
является одним из наборов командлетов, поддерживающих функцию транзакций в Windows PowerShell. Дополнительные сведения см. в about_Transactions.
Примеры
Пример 1. Скрипт с помощью объекта с поддержкой транзакций
Start-Transaction
$transactedString = New-Object Microsoft.PowerShell.Commands.Management.TransactedString
$transactedString.Append("Hello")
Use-Transaction -TransactedScript { $transactedString.Append(", World") } -UseTransaction
$transactedString.ToString()
Hello
Use-Transaction -TransactedScript { $transactedString.ToString() } -UseTransaction
Hello, World
Complete-Transaction
$transactedString.ToString()
Hello, World
В этом примере показано, как использовать Use-Transaction
для скрипта для объекта .NET Framework с поддержкой транзакций. В этом случае объект является объектом TransactedString.
Первая команда использует командлет Start-Transaction
для запуска транзакции.
Вторая команда использует команду New-Object для создания объекта TransactedString. Он сохраняет объект в переменной $TransactedString
.
Третий и четвертый команды используют метод Add объекта TransactedString для добавления текста в значение $TransactedString
. Одна команда является частью транзакции. Другая команда не является.
Третья команда использует метод Add строки для добавления Hello в значение $TransactedString
. Так как команда не является частью транзакции, это изменение применяется немедленно.
Четвертая команда использует Use-Transaction
для добавления текста в строку в транзакции. Команда использует метод Add для добавления ", World" в значение $TransactedString
. Команда заключена в фигурные скобки ({}
), чтобы сделать его блоком скрипта. Параметр UseTransaction требуется в этой команде.
Пятые и шестые команды используют метод ToString объекта TransactedString для отображения значения TransactedString в виде строки. Опять же, одна команда является частью транзакции. Другая транзакция не является.
Пятая команда использует метод ToString для отображения текущего значения переменной $TransactedString. Так как она не является частью транзакции, она отображает только текущее состояние строки.
Шестая команда использует Use-Transaction
для выполнения той же команды в транзакции. Так как команда является частью транзакции, она отображает текущее значение строки в транзакции, как и предварительный просмотр изменений транзакции.
Седьмая команда использует командлет Complete-Transaction
для фиксации транзакции.
Последняя команда использует метод ToString для отображения результирующего значения переменной в виде строки.
Пример 2. Откат транзакции
Start-Transaction
$transactedString = New-Object Microsoft.PowerShell.Commands.Management.TransactedString
$transactedString.Append("Hello")
Use-Transaction -TransactedScript { $transactedString.Append(", World") } -UseTransaction
Undo-Transaction
$transactedString.ToString()
Hello
В этом примере показан эффект отката транзакции, включающей команды Use-Transaction
. Как и все команды в транзакции, при откате транзакции изменения транзакций удаляются и данные не изменяются.
Первая команда использует Start-Transaction
для запуска транзакции.
Вторая команда использует New-Object
для создания объекта TransactedString. Он сохраняет объект в переменной $TransactedString
.
Третья команда, которая не является частью транзакции, использует метод Add, чтобы добавить "Hello" в значение $TransactedString
.
Четвертая команда использует Use-Transaction
для выполнения другой команды, которая использует метод добавления в транзакции. Команда использует метод Add для добавления ", World" в значение $TransactedString
.
Пятая команда использует командлет Undo-Transaction для отката транзакции. В результате все команды, выполняемые в транзакции, будут отменены.
Последняя команда использует метод ToString для отображения результирующего значения $TransactedString
в виде строки. Результаты показывают, что к объекту применены только изменения, внесенные вне транзакции.
Параметры
-TransactedScript
Указывает блок скрипта, который выполняется в транзакции. Введите любой допустимый блок скрипта, заключенный в фигурные скобки ({}
). Этот параметр является обязательным.
Тип: | ScriptBlock |
Position: | 0 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-UseTransaction
Включает команду в активную транзакцию. Этот параметр действителен только в том случае, если выполняется транзакция. Дополнительные сведения см. в about_Transactions.
Тип: | SwitchParameter |
Aliases: | usetx |
Position: | Named |
Default value: | False |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
Входные данные
None
Входные данные в этот командлет невозможно передать.
Выходные данные
PSObject
Этот командлет возвращает результат транзакции.
Примечания
- Параметр UseTransaction включает команду в активную транзакцию. Так как командлет
Use-Transaction
всегда используется в транзакциях, этот параметр требуется для эффективной любой командыUse-Transaction
.
Связанные ссылки
PowerShell