Поделиться через


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

Этот командлет не возвращает выходные данные.

Примечания

  • Вы не можете откатить транзакцию, которая была зафиксирована.

    Откат транзакции, отличной от активной транзакции, невозможно. Для отката другой независимой транзакции необходимо сначала зафиксировать или откатить активную транзакцию.

    Откат транзакции завершает транзакцию. Чтобы снова использовать транзакцию, необходимо запустить новую транзакцию.