Поделиться через


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.