Откатывает активную транзакцию.
Синтаксис
Undo-Transaction [-Confirm] [-WhatIf] [<CommonParameters>]
Описание
Командлет Undo-Transaction откатывает активную транзакцию. При откате транзакции изменения, внесенные командами в транзакции, отменяются, и данные восстанавливаются в своем исходном виде.
Если в транзакции участвует несколько подписчиков, команда Undo-Transaction откатывает всю транзакцию для всех подписчиков.
По умолчанию транзакции откатываются автоматически, если какая-либо из команд в транзакции выдает ошибку. Тем не менее, можно запускать транзакции с другим значением параметра RollbackPreference и с помощью этого командлета откатывать активную транзакцию в любой момент.
Командлет Undo-Transaction входит в набор командлетов, поддерживающих обработку транзакций в Windows PowerShell. Дополнительные сведения см. в разделе about_Transactions.
Параметры
-Confirm
Запрашивает подтверждение перед выполнением команды.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-WhatIf
Описывает, что произойдет при выполнении команды, без ее фактического выполнения.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
<CommonParameters>
Данный командлет поддерживает общие параметры -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer и -OutVariable. Дополнительные сведения см. в разделе about_Commonparameters.
Ввод и вывод
Входным типом является тип объектов, которые можно передавать командлету по конвейеру. Возвращаемым типом является тип объектов, возвращаемых командлетом.
Входные данные |
Нет Передать входные данные этому командлету по конвейеру невозможно. |
Выходные данные |
Нет Этот командлет не возвращает никаких выходных данных. |
Примечания
Откатить транзакцию, которая была зафиксирована, невозможно.
Откатить можно только активную транзакцию. Чтобы откатить другую независимую транзакцию, необходимо сначала зафиксировать или откатить активную транзакцию.
При выполнении отката транзакция заканчивается. Чтобы снова использовать транзакцию, необходимо запустить новую транзакцию.
Пример 1
C:\PS>undo-transaction Описание ----------- Эта команда откатывает текущую (активную) транзакцию.
Пример 2
C:\PS>cd hkcu:\software PS HKCU:\Software> start-transaction PS HKCU:\Software> new-item MyCompany -usetransaction PS HKCU:\Software> undo-transaction Описание ----------- Эта команда запускает транзакцию и затем откатывает ее. В результате никакие изменения в реестр не вносятся.
Пример 3
C:\PS>cd hkcu:\software PS HKCU:\Software> start-transaction PS HKCU:\Software> new-item MyCompany -usetransaction PS HKCU:\Software> get-transaction RollbackPreference SubscriberCount Status ------------------ --------------- ----- Error 1 Active PS HKCU:\Software> start-transaction PS HKCU:\Software> get-transaction RollbackPreference SubscriberCount Status ------------------ --------------- ----- Error 2 Active PS HKCU:\Software> undo-transaction PS HKCU:\Software> get-transaction RollbackPreference SubscriberCount Status ------------------ --------------- ----- Error 0 RolledBack Описание ----------- Этот пример показывает, что при откате транзакции каким-либо из подписчиков происходит откат всей транзакции для всех подписчиков. Первая команда изменяет текущее местоположение на раздел реестра HKCU:\Software. Вторая команда запускает транзакцию. Третья команда с помощью командлета New-Item создает новый раздел реестра. В ней используется параметр UseTransaction для включения изменения в транзакцию. Четвертая команда с помощью командлета Get-Transaction получает активную транзакцию. Обратите внимание, что состояние транзакции — активное (Status = Active), а количество подписчиков равно 1. В пятой команде снова используется командлет Start-Transaction. Как правило, запуск транзакции во время выполнения другой транзакции происходит в случаях, когда используемый в главной транзакции скрипт предполагает завершение собственной входящей в него транзакции. (Этот пример выполняется в интерактивном режиме, чтобы можно было рассмотреть его поэтапно). При вводе команды Start-Transaction во время выполнения другой транзакции команды присоединяются к существующей транзакции в качестве нового "подписчика", и количество подписчиков увеличивается. Шестая команда с помощью командлета Get-Transaction получает активную транзакцию. Обратите внимание, что количество подписчиков теперь равно 2. Седьмая команда с помощью командлета Undo-Transaction откатывает транзакцию. Эта команда не возвращает никаких объектов. Последняя команда — это команда Get-Transaction, которая получает активную (в данном случае — последнюю из активных) транзакцию. Из результатов видно, что выполнен откат транзакции и что количество подписчиков равно 0, т. е. откат транзакции выполнен для всех подписчиков.
См. также