다음을 통해 공유


Complete-Transaction

활성 트랜잭션을 커밋합니다.

구문

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

설명

Complete-Transaction cmdlet은 활성 트랜잭션을 커밋합니다. 트랜잭션을 커밋하면 트랜잭션의 명령이 마무리되어 명령의 영향을 받는 데이터가 변경됩니다.

트랜잭션에 여러 가입자가 포함된 경우 트랜잭션을 커밋하려면 모든 Start-Transaction 명령에 대해 한 번씩 Complete-Transaction 명령을 입력해야 합니다.

Complete-Transaction cmdlet은 Windows PowerShell의 트랜잭션 기능을 지원하는 cmdlet 집합 중 하나입니다. 자세한 내용은 about_Transactions를 참조하십시오.

매개 변수

-Confirm

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

필수 여부

false

위치

named

기본값

파이프라인 입력 적용 여부

false

와일드카드 문자 적용 여부

false

-WhatIf

명령을 실제로 실행하지 않고도 명령이 실행될 경우 발생할 수 있는 현상을 설명합니다.

필수 여부

false

위치

named

기본값

파이프라인 입력 적용 여부

false

와일드카드 문자 적용 여부

false

<CommonParameters>

이 cmdlet은 -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer, -OutVariable 등의 일반 매개 변수를 지원합니다. 자세한 내용은 about_commonparameters.

입력 및 출력

입력 유형은 cmdlet으로 파이프할 수 있는 개체의 유형입니다. 반환 유형은 cmdlet에서 반환되는 개체의 유형입니다.

입력

없음

Complete-Transaction으로 개체를 파이프할 수 없습니다.

출력

없음

이 cmdlet은 어떠한 개체도 반환하지 않습니다.

참고

커밋된 트랜잭션을 롤백하거나 롤백된 트랜잭션을 커밋할 수 없습니다.

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

트랜잭션의 명령에서 오류가 발생할 경우와 같이 트랜잭션의 일부를 커밋할 수 없는 경우에는 기본적으로 전체 트랜잭션이 롤백됩니다.

예 1

C:\PS>cd hkcu:\software

PS HKCU:\software> start-transaction

PS HKCU:\software> new-item MyCompany -UseTransaction
PS HKCU:\software> dir m*

   Hive: HKEY_CURRENT_USER\software

SKC  VC Name                           Property
---  -- ----                           --------
 82   1 Microsoft                      {(default)}

PS HKCU:\software> complete-transaction
PS HKCU:\software> dir m*

   Hive: HKEY_CURRENT_USER\Software

SKC  VC Name                           Property
---  -- ----                           --------
 82   1 Microsoft                      {(default)}
  0   0 MyCompany                      {}

설명
-----------
이 예에서는 Complete-Transaction cmdlet을 사용하여 트랜잭션을 커밋할 경우의 결과를 보여 줍니다.

Start-Transaction 명령은 트랜잭션을 시작합니다. New-Item 명령은 UseTransaction 매개 변수를 사용하여 트랜잭션에 명령을 포함합니다.

첫 번째 "dir" (Get-ChildItem) 명령은 새 항목이 아직 레지스트리에 추가되지 않았음을 보여 줍니다.

Complete-Transaction 명령은 트랜잭션을 커밋합니다. 그러면 레지스트리 변경 내용이 적용됩니다. 두 번째 "dir" 명령은 그 결과 레지스트리가 변경되었음을 보여 줍니다.





예 2

C:\PS>cd hkcu:\software

PS HKCU:\software> start-transaction
PS HKCU:\software> new-item MyCompany -UseTransaction

   Hive: HKEY_CURRENT_USER\Software

SKC  VC Name                           Property
---  -- ----                           --------
  0   0 MyCompany                      {}

PS HKCU:\software> start-transaction
PS HKCU:\Software> Get-Transaction

RollbackPreference   SubscriberCount  Status
------------------   ---------------  ------
Error                2                Active

PS HKCU:\software> new-itemproperty -path MyCompany -name MyKey -value -UseTransaction

MyKey
-----
123

PS HKCU:\software> complete-transaction
PS HKCU:\software> get-transaction

RollbackPreference   SubscriberCount  Status
------------------   ---------------  ------
Error                1                Active

PS HKCU:\software> dir m*

   Hive: HKEY_CURRENT_USER\Software

SKC  VC Name                           Property
---  -- ----                           --------
 82   1 Microsoft                      {(default)}

PS HKCU:\software> complete-transaction
PS HKCU:\software> dir m*

   Hive: HKEY_CURRENT_USER\Software

SKC  VC Name                           Property
---  -- ----                           --------
 82   1 Microsoft                      {(default)}
  0   1 MyCompany                      {MyKey}

설명
-----------
이 예에서는 Complete-Transaction을 사용하여 가입자가 둘 이상인 트랜잭션을 커밋하는 방법을 보여 줍니다. 

다중 가입자 트랜잭션을 커밋하려면 모든 Start-Transaction 명령에 대해 한 번씩 Complete-Transaction 명령을 입력해야 합니다. 마지막 Complete-Transaction 명령이 전송되어야만 데이터가 변경됩니다. 

이 예에서는 이해를 돕기 위해 명령줄에 입력하는 일련의 명령을 보여 줍니다. 실제 환경에서는 대개 스크립트로 트랜잭션을 실행하며 보조 트랜잭션은 주 스크립트로 호출되는 함수나 도우미 스크립트를 통해 실행합니다.

이 예에서 Start-Transaction 명령은 트랜잭션을 시작합니다. UseTransaction 매개 변수가 포함된 New-Item 명령은 MyCompany 키를 Software 키에 추가합니다. New-Item 명령이 키 개체를 반환하지만 레지스트리의 데이터는 아직 변경되지 않습니다.

두 번째 Start-Transaction 명령은 두 번째 가입자를 기존 트랜잭션에 추가합니다. Get-Transaction 명령은 가입자 개수가 2인지 확인합니다. UseTransaction 매개 변수가 포함된 New-ItemProperty 명령은 새 MyCompany 키에 레지스트리 항목을 추가합니다. 다시 명령이 값을 반환하지만 레지스트리는 변경되지 않습니다.

첫 번째 Complete-Transaction 명령은 가입자 개수를 1씩 줄입니다. 이는 Get-Transaction 명령을 실행하면 확인할 수 있습니다. 그러나 "dir m*" (Get-ChildItem) 명령을 실행하면 알 수 있듯이 데이터는 변경되지 않습니다.

두 번째 Complete-Transaction 명령은 전체 트랜잭션을 커밋하고 레지스트리의 데이터를 변경합니다. 두 번째 "dir m*" 명령을 실행하면 데이터가 변경되었음을 확인할 수 있습니다.





예 3

C:\PS>cd hkcu:\software

PS HKCU:\software> start-transaction

PS HKCU:\software> new-item MyCompany -UseTransaction

PS HKCU:\software> dir m*

   Hive: HKEY_CURRENT_USER\Software

SKC  VC Name                           Property
---  -- ----                           --------
 82   1 Microsoft                      {(default)}


PS HKCU:\software> dir m* -UseTransaction

   Hive: HKEY_CURRENT_USER\Software

SKC  VC Name                           Property
---  -- ----                           --------
 82   1 Microsoft                      {(default)}
  0   0 MyCompany                      {}

PS HKCU:\software> complete-transaction

설명
-----------
이 예에서는 Get-* 명령 및 데이터를 변경하지 않는 다른 명령을 트랜잭션에 사용할 경우의 장점을 보여 줍니다. 트랜잭션에 사용하는 경우 Get-* 명령은 트랜잭션에 포함된 개체를 가져옵니다. 이 경우 트랜잭션의 변경 내용을 커밋하기 전에 미리 볼 수 있습니다.

이 예에서는 트랜잭션이 시작됩니다. UseTransaction 매개 변수가 포함된 New-Item 명령은 새 키를 트랜잭션의 일부로 레지스트리에 추가합니다.

Complete-Transaction 명령이 실행될 때까지 새 레지스트리 키가 레지스트리에 추가되지 않기 때문에 단순한 "dir" (Get-ChildItem) 명령은 새 키가 없는 레지스트리를 보여 줍니다. 

그러나 "dir" 명령에 UseTransaction 매개 변수를 추가하면 명령이 트랜잭션의 일부가 되어 항목이 아직 데이터에 추가되지 않은 경우에도 트랜잭션의 항목을 가져옵니다.





참고 항목

개념

about_Transactions
Start-Transaction
Get-Transaction
Undo-Transaction
Use-Transaction