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


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 командлет для получения активной транзакции. Обратите внимание, что состояние — Active, а число подписчиков — 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

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

Примечания

  • Нельзя выполнить откат транзакции, которая была зафиксирована.

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

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