Use-Transaction
Добавляет блок скрипта в активную транзакцию.
Синтаксис
Default (По умолчанию)
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.
Третий и четвертый команды используют метод 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 |
| Default value: | None |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
Наборы параметров
(All)
| Position: | 0 |
| Обязательно: | True |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
-UseTransaction
Включает команду в активную транзакцию. Этот параметр действителен только в том случае, если выполняется транзакция. Дополнительные сведения см. в about_Transactions.
Свойства параметров
| Тип: | SwitchParameter |
| Default value: | False |
| Поддерживаются подстановочные знаки: | False |
| DontShow: | False |
| Aliases: | usetx |
Наборы параметров
(All)
| Position: | Named |
| Обязательно: | False |
| Значение из конвейера: | False |
| Значение из конвейера по имени свойства: | False |
| Значение из оставшихся аргументов: | False |
CommonParameters
Этот командлет поддерживает общие параметры: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction и -WarningVariable. Дополнительные сведения см. в разделе about_CommonParameters.
Входные данные
None
Входные данные в этот командлет невозможно передать.
Выходные данные
PSObject
Этот командлет возвращает результат транзакции.
Примечания
- Параметр UseTransaction включает команду в активную транзакцию. Так как командлет
Use-Transactionвсегда используется в транзакциях, этот параметр требуется для эффективной любой командыUse-Transaction.