Use-Transaction
Добавляет блок скрипта в активную транзакцию.
Синтаксис
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 в виде строки. Из результатов видно, что к объекту применены только те изменения, которые были внесены за рамками транзакции.
См. также
Концепции
about_Transactions
Start-Transaction
Get-Transaction
Complete-Transaction
Undo-Transaction