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


Undo-Transaction

Откат активной транзакции.

Синтаксис

Default (По умолчанию)

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

Запрашивает подтверждение перед запуском cmdlet.

Свойства параметров

Тип:SwitchParameter
Default value:False
Поддерживаются подстановочные знаки:False
DontShow:False
Aliases:cf

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-WhatIf

Показывает, что произойдет, если командлет будет запущен. Командлет не запускается.

Свойства параметров

Тип:SwitchParameter
Default value:False
Поддерживаются подстановочные знаки:False
DontShow:False
Aliases:wi

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

CommonParameters

Этот командлет поддерживает общие параметры: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction и -WarningVariable. Дополнительные сведения см. в разделе about_CommonParameters.

Входные данные

None

Входные данные в этот командлет невозможно передать.

Выходные данные

None

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

Примечания

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

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

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