Добавляет блок скрипта в активную транзакцию.

Синтаксис

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

Описание

Командлет Use-Transaction добавляет блок скрипта в активную транзакцию. Это позволяет выполнять в рамках транзакций скрипты с использованием объектов Microsoft .NET Framework, поддерживающих транзакции. Блок скрипта может содержать только объекты .NET, поддерживающие транзакции, такие как экземпляры класса Microsoft.PowerShell.Commands.Management.TransactedString.

Параметр UseTransaction, необязательный для большинства командлетов, при использовании этого командлета является обязательным.

Командлет Use-Transaction входит в набор командлетов, поддерживающих обработку транзакций в Windows PowerShell. Дополнительные сведения см. в разделе about_Transactions.

Параметры

-TransactedScript <scriptblock>

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

Обязательно?

true

Позиция?

1

Значение по умолчанию

нет

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-UseTransaction

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

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

<CommonParameters>

Данный командлет поддерживает общие параметры -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer и -OutVariable. Дополнительные сведения см. в разделе about_Commonparameters.

Ввод и вывод

Входным типом является тип объектов, которые можно передавать командлету по конвейеру. Возвращаемым типом является тип объектов, возвращаемых командлетом.

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

Нет

Передать входные данные этому командлету по конвейеру невозможно.

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

PSObject

Командлет Use-Transaction возвращает результат транзакции.

Примечания

Параметр Use-Transaction включает команду в активную транзакцию. Поскольку командлет Use-Transaction всегда используется в транзакциях, этот параметр необходим в любой команде 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 для выполнения скрипта над поддерживающим транзакции объектом .NET Framework. В данном случае объект представляет собой объект класса TransactedString. 

Первая команда с помощью командлета Start-Transaction запускает транзакцию. 

Вторая команда с помощью командлета New-Object создает объект TransactedString. Этот объект сохраняется в переменной $TransactedString.

Третья и четвертая команды с помощью метода Append объекта TransactedString добавляют текст к значению переменной $TransactedString. Одна команда является частью транзакции, другая нет.

В третьей команде с помощью метода Append для строки, над которой выполняется транзакция, к значению переменной $TransactedString добавляется слово "Hello". Поскольку команда не является частью транзакции, изменение применяется немедленно.

Четвертая команда с помощью командлета Use-Transaction добавляет текст к строке в рамках транзакции. С помощью метода Append к значению переменной $transactedString добавляется текст ", World". Команда заключена в фигурные скобки ( {} ), что превращает ее в блок скрипта. Параметр UseTransaction в этой команде является обязательным.

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

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

В шестой команде с помощью командлета Use-Transaction та же самая команда выполняется в рамках транзакции. Поскольку команда является частью транзакции, отображается текущее значение строки в рамках транзакции, подобно предварительному просмотру вносимых транзакцией изменений.

Седьмая команда с помощью командлета Complete-Transaction фиксирует транзакцию.

Последняя команда с помощью метода 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 запускает транзакцию. 

Вторая команда с помощью командлета New-Object создает объект TransactedString. Этот объект сохраняется в переменной $TransactedString.

Третья команда, которая не является частью транзакции, с помощью метода Append добавляет слово "Hello" к значению переменной $TransactedString. 

В четвертой команде с помощью командлета Use-Transaction в пределах транзакции выполняется другая команда, в которой используется метод Append. С помощью метода Append к значению переменной $transactedString добавляется текст ", World". 

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

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






См. также




Содержание