다음을 통해 공유


Undo-Transaction

활성 트랜잭션을 롤백합니다.

구문

Undo-Transaction
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

Description

실행 취소 트랜잭션 cmdlet은 활성 트랜잭션을 롤백합니다. 트랜잭션을 롤백하면 트랜잭션의 명령에 의해 변경된 내용이 삭제되고 데이터가 원래 형식으로 복원됩니다.

트랜잭션에 여러 구독자가 포함된 경우 Undo-Transaction 명령은 모든 구독자에 대해 전체 트랜잭션을 롤백합니다.

기본적으로 트랜잭션의 명령이 오류를 생성하는 경우 트랜잭션이 자동으로 롤백됩니다. 그러나 다른 롤백 기본 설정을 사용하여 트랜잭션을 시작할 수 있으며 이 cmdlet을 사용하여 언제든지 활성 트랜잭션을 롤백할 수 있습니다.

실행 취소 트랜잭션 cmdlet은 Windows PowerShell의 트랜잭션 기능을 지원하는 cmdlet 집합 중 하나입니다. 자세한 내용은 about_Transactions 참조하세요.

예제

예제 1: 현재 트랜잭션 롤백

PS C:\> Undo-Transaction

이 명령은 현재 활성 트랜잭션을 롤백합니다.

예제 2: 트랜잭션 시작 및 롤백

PS C:\> cd hkcu:\software
PS HKCU:\Software> Start-Transaction
PS HKCU:\Software> New-Item -Path "ContosoCompany" -UseTransaction
PS HKCU:\Software> Undo-Transaction

다음은 트랜잭션을 시작한 다음 롤백하는 예제입니다. 따라서 레지스트리는 변경되지 않습니다.

예제 3: 모든 구독자에 대한 트랜잭션 롤백

PS C:\> cd hkcu:\software
PS HKCU:\Software> Start-Transaction
PS HKCU:\Software> New-Item -Path "ContosoCompany" -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 cmdlet을 사용하여 새 레지스트리 키를 만듭니다. 이 명령은 UseTransaction 매개 변수를 사용하여 트랜잭션의 변경 사항을 포함합니다.

네 번째 명령은 Get-Transaction cmdlet을 사용하여 활성 트랜잭션을 가져옵니다. 상태가 활성 상태이고 구독자 수는 1입니다.

다섯 번째 명령은 Start-Transaction 명령을 다시 사용합니다. 일반적으로 다른 트랜잭션이 진행 중인 동안 트랜잭션을 시작하는 것은 주 트랜잭션에서 사용되는 스크립트에 자체 전체 트랜잭션이 포함된 경우에 발생합니다. 이 예제는 단계별로 검사할 수 있도록 대화형으로 수행됩니다. 다른 트랜잭션이 진행되는 동안 Start-Transaction 명령을 실행하면 명령은 기존 트랜잭션을 새 구독자로 조인하고 구독자 수가 증가합니다.

여섯 번째 명령은 Get-Transaction cmdlet을 사용하여 활성 트랜잭션을 가져옵니다. 구독자 수는 이제 2입니다.

일곱 번째 명령은 실행 취소 트랜잭션 사용하여 트랜잭션을 롤백합니다. 이 명령은 개체를 반환하지 않습니다.

마지막 명령은 활성 또는 이 경우 가장 최근에 활성화된 트랜잭션을 가져오는 Get-Transaction 명령입니다. 결과는 트랜잭션이 롤백되고 구독자 수가 0임을 보여 줍니다. 모든 구독자에 대해 트랜잭션이 롤백되었음을 보여 줍니다.

매개 변수

-Confirm

cmdlet을 실행하기 전에 확인 메시지를 표시합니다.

형식:SwitchParameter
별칭:cf
Position:Named
Default value:False
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-WhatIf

cmdlet이 실행되면 어떻게 되는지 보여 주세요. cmdlet이 실행되지 않습니다.

형식:SwitchParameter
별칭:wi
Position:Named
Default value:False
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

입력

None

이 cmdlet에 입력을 파이프할 수 없습니다.

출력

None

이 cmdlet은 출력을 반환하지 않습니다.

참고

  • 커밋된 트랜잭션은 롤백할 수 없습니다.

    활성 트랜잭션 이외의 트랜잭션은 롤백할 수 없습니다. 독립된 다른 트랜잭션을 롤백하려면 먼저 활성 트랜잭션을 커밋하거나 롤백해야 합니다.

    트랜잭션을 롤백하면 트랜잭션이 종료됩니다. 트랜잭션을 다시 사용하려면 새 트랜잭션을 시작해야 합니다.