Undo-Transaction
Откат активной транзакции.
Синтаксис
Undo-Transaction
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Описание
Командлет Undo-Transaction
откатит активную транзакцию. При откате транзакции изменения, внесенные командами в транзакции, удаляются и данные восстанавливаются в исходной форме.
Если транзакция включает несколько подписчиков, команда Undo-Transaction
откатит всю транзакцию для всех подписчиков.
По умолчанию транзакции откатываются автоматически, если любая команда в транзакции создает ошибку. Однако транзакции можно запускать с помощью другого предпочтения отката, и этот командлет можно использовать для отката активной транзакции в любое время.
Командлет Undo-Transaction
является одним из наборов командлетов, поддерживающих функцию транзакций в Windows PowerShell. Дополнительные сведения см. в about_Transactions.
Примеры
Пример 1. Откат текущей транзакции
Undo-Transaction
Эта команда откатывает текущую, активную, транзакцию.
Пример 2. Запуск и откат транзакции
Set-Location hkcu:\software
Start-Transaction
New-Item -Path "ContosoCompany" -UseTransaction
Undo-Transaction
В этом примере запускается транзакция, а затем выполняется откат. В результате изменения в реестре не вносятся.
Пример 3. Откат транзакции для всех подписчиков
Set-Location hkcu:\software
Start-Transaction
New-Item -Path "ContosoCompany" -UseTransaction
Get-Transaction
RollbackPreference SubscriberCount Status
------------------ --------------- -----
Error 1 Active
Start-Transaction
Get-Transaction
RollbackPreference SubscriberCount Status
------------------ --------------- -----
Error 2 Active
Undo-Transaction
Get-Transaction
RollbackPreference SubscriberCount Status
------------------ --------------- -----
Error 0 RolledBack
В этом примере показано, что при откате транзакции любой подписчик выполняет откат всей транзакции для всех подписчиков.
Первая команда изменяет расположение в разделе реестра HKCU:\Software
.
Вторая команда запускает транзакцию.
Третья команда использует командлет New-Item
для создания нового раздела реестра. Команда использует параметр UseTransaction для включения изменения в транзакцию.
Четвертая команда использует командлет Get-Transaction
для получения активной транзакции. Обратите внимание, что состояние активно, а число подписчиков равно 1.
Пятая команда снова использует команду Start-Transaction
. Как правило, запуск транзакции во время выполнения другой транзакции происходит, когда скрипт, используемый основной транзакцией, включает собственную полную транзакцию. Этот пример выполняется в интерактивном режиме, чтобы можно было проанализировать его на этапах. При выполнении команды Start-Transaction
во время выполнения другой транзакции команды присоединяются к существующей транзакции в качестве нового подписчика и увеличивается число подписчиков.
Шестая команда использует командлет Get-Transaction
для получения активной транзакции. Обратите внимание, что число подписчиков теперь равно 2.
Седьмая команда использует Undo-Transaction
для отката транзакции. Эта команда не возвращает объекты.
Последняя команда — это команда Get-Transaction
, которая получает активную или в данном случае последнюю активную транзакцию. Результаты показывают, что транзакция откатывается и что число подписчиков равно 0, показывающее, что транзакция была откатена для всех подписчиков.
Параметры
-Confirm
Запрашивает подтверждение перед запуском командлета.
Тип: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-WhatIf
Показывает, что произойдет, если командлет выполняется. Командлет не выполняется.
Тип: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
Входные данные
None
Входные данные в этот командлет невозможно передать.
Выходные данные
None
Этот командлет не возвращает выходные данные.
Примечания
Вы не можете откатить транзакцию, которая была зафиксирована.
Откат транзакции, отличной от активной транзакции, невозможно. Для отката другой независимой транзакции необходимо сначала зафиксировать или откатить активную транзакцию.
Откат транзакции завершает транзакцию. Чтобы снова использовать транзакцию, необходимо запустить новую транзакцию.
Связанные ссылки
PowerShell