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


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 of the transacted string, чтобы добавить 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метод Append в транзакции. Команда использует метод Add для добавления ", World" в значение $TransactedString.

Пятая команда использует командлет Undo-Transaction для отката транзакции. В результате все команды, выполненные в рамках транзакции, отменяются.

Последняя команда использует метод ToString для отображения результирующего значения $TransactedString в виде строки. Из результатов видно, что к объекту применены только изменения, внесенные за рамками транзакции.

Параметры

-TransactedScript

Указывает блок сценариев, выполняемых в транзакции. Введите любой допустимый блок скрипта, заключенный в фигурные скобки ({}). Этот параметр является обязательным.

Type:ScriptBlock
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-UseTransaction

Включает команду в активную транзакцию. Этот параметр доступен только при выполнении транзакции. Дополнительные сведения см. в about_transactions.

Type:SwitchParameter
Aliases:usetx
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Входные данные

None

В этот командлет нельзя передать входные данные.

Выходные данные

PSObject

Этот командлет возвращает результат транзакции.

Примечания

  • Параметр Use-Transaction включает команду в активную транзакцию. Use-Transaction Так как командлет всегда используется в транзакциях, этот параметр необходим для эффективного выполнения любой Use-Transaction команды.