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