Откатывает активную транзакцию.

Синтаксис

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, т. е. откат транзакции выполнен для всех подписчиков.






См. также




Содержание