항목
    about_Transactions

간단한 설명
    Windows PowerShell에서 트랜잭션 작업을 관리하는 방법에 대해 설명합니다. 

자세한 설명
    트랜잭션은 Windows PowerShell 2.0 이상에서 지원됩니다. 이 기능을 사용하면 트랜잭션을 시작하고, 
    트랜잭션에 속한 명령을 지정하고, 트랜잭션을 커밋하거나 롤백할 수 있습니다.
    
    
  트랜잭션 정보

      Windows PowerShell에서 트랜잭션은 하나의 논리 단위로 관리되는 명령의 집합입니다. 트랜잭션을 
      완료("커밋")할 수 있으며, 이 경우 트랜잭션의 영향을 받는 데이터가 변경됩니다. 또는 영향을 받는 
      데이터가 트랜잭션을 통해 변경되지 않도록 트랜잭션을 완전히 취소("롤백")할 수 있습니다. 

      트랜잭션의 명령은 하나의 단위로 관리되므로 모든 명령이 커밋되거나 모든 명령이 롤백됩니다. 

      트랜잭션은 데이터 처리에서 널리 사용되며 특히 데이터베이스 작업과 재무 거래에 주로 사용됩니다. 
      일련의 명령에 대한 최악의 시나리오가 명령이 모두 실패하는 경우가 아니라 일부 명령이 실패하지만 
      다른 명령은 성공하여 시스템이 복구하기 어려운 손상되거나 잘못되거나 해석할 수 없는 상태가 되는 
      경우일 때 트랜잭션이 가장 흔히 사용됩니다.

            
  트랜잭션 cmdlet

      Windows PowerShell에는 트랜잭션 관리에 사용하도록 설계된 몇 가지 cmdlet이 포함되어 있습니다.

      Cmdlet                 설명
      --------------         ----------------------------------------------------------   
      Start-Transaction      새 트랜잭션을 시작합니다. 

      Use-Transaction        명령이나 식을 트랜잭션에 추가합니다. 이 명령은 트랜잭션 
      			     가능 개체를 사용해야 합니다.

      Undo-Transaction       데이터가 트랜잭션을 통해 변경되지 않도록 트랜잭션을 롤백합니다.

      Complete-Transaction  트랜잭션을 커밋합니다. 트랜잭션의 영향을 받는 데이터가 변경됩니다.

      Get-Transaction       활성 트랜잭션에 대한 정보를 가져옵니다.



      트랜잭션 cmdlet의 목록을 보려면 다음과 같이 입력하십시오.

          get-command *transaction

      cmdlet에 대한 자세한 내용을 보려면 다음과 같이 입력하십시오.

	  get-help <cmdlet-name> -detailed

      예를 들면 다음과 같습니다.
	
	  get-help use-transaction -detailed


  트랜잭션 가능 요소

      트랜잭션에 참여하려면 cmdlet과 공급자가 트랜잭션을 지원해야 합니다. 이 기능은 트랜잭션의 
      영향을 받는 개체에 기본적으로 제공됩니다.
   
      Windows PowerShell 레지스트리 공급자는 Windows Vista에서 트랜잭션을 지원합니다. 
      TransactedString 개체(Microsoft.PowerShell.Commands.Management.TransactedString)는 
      Windows PowerShell을 실행하는 모든 운영 체제에서 작동합니다. 

      다른 Windows PowerShell 공급자도 트랜잭션을 지원할 수 있습니다. 세션에서 트랜잭션을 지원하는 
      Windows PowerShell 공급자를 찾으려면 다음 명령을 사용하여 공급자의 Capabilities 속성에서 
      "Transactions" 값을 찾으십시오.

	  get-psprovider | where {$_.Capabilities -like "*transactions*"}

      공급자에 대한 자세한 내용은 공급자에 대한 도움말을 참조하십시오. 공급자 도움말을 가져오려면 
      다음과 같이 입력하십시오.

	  get-help <provider-name>

      예를 들어 레지스트리 공급자에 대한 도움말을 가져오려면 다음과 같이 입력하십시오.

	  get-help registry
  


  UseTransaction 매개 변수

      트랜잭션을 지원할 수 있는 cmdlet에는 UseTransaction 매개 변수가 있습니다. 이 매개 변수는 해당 
      명령을 활성 트랜잭션에 포함합니다. 전체 매개 변수 이름이나 "usetx" 별칭을 사용할 수 있습니다.

      세션에 활성 트랜잭션이 포함된 경우에만 이 매개 변수를 사용할 수 있습니다. 활성 트랜잭션이 없는 
      경우에 UseTransaction 매개 변수와 함께 명령을 입력하면 명령이 실패합니다.

      UseTransaction 매개 변수가 있는 cmdlet을 찾으려면 다음과 같이 입력하십시오.

	  get-help * -parameter UseTransaction  

      Windows PowerShell 코어에서 Windows PowerShell 공급자와 작동하도록 설계된 모든 cmdlet은 
      트랜잭션을 지원합니다. 따라서 공급자 cmdlet을 사용하여 트랜잭션을 관리할 수 있습니다. 

      Windows PowerShell 공급자에 대한 자세한 내용은 about_Providers를 참조하십시오.  
 

  트랜잭션 개체

      트랜잭션은 Windows PowerShell에서 트랜잭션 개체 System.Management.Automation.
      Transaction으로 표시됩니다.

      이 개체의 속성은 다음과 같습니다.

      RollbackPreference: 
          현재 트랜잭션에 대해 설정된 롤백 기본 설정을 포함합니다. Start-Transaction을 사용하여 
          트랜잭션을 시작할 때 롤백 기본 설정을 지정할 수 있습니다. 

          롤백 기본 설정에 따라 트랜잭션이 자동으로 롤백되는 조건이 결정됩니다. 유효한 값은 Error, 
          TerminatingError 및 Never이고, 기본값은 Error입니다.

      Status:              
         트랜잭션의 현재 상태를 포함합니다. 유효한 값은 Active, Committed 및 RolledBack입니다.


      SubscriberCount:              
         트랜잭션에 대한 가입자 수를 포함합니다. 다른 트랜잭션이 진행 중일 때 트랜잭션을 시작하면 가입자가 
         트랜잭션에 추가됩니다. 가입자가 트랜잭션을 커밋하면 가입자 수가 줄어듭니다.
    

  활성 트랜잭션

      Windows PowerShell에서는 한 번에 한 트랜잭션만 활성화되며 사용자는 활성 트랜잭션만 관리할 수 
      있습니다. 동시에 여러 트랜잭션이 동일한 세션에서 진행 중일 수 있지만 가장 최근에 시작된 트랜잭션만 
      활성화됩니다. 

      따라서 트랜잭션 cmdlet을 사용할 때 특정 트랜잭션을 지정할 수 없습니다. 명령은 항상 활성 트랜잭션에 
      적용됩니다.

      이는 Get-Transaction cmdlet의 동작에서 가장 분명히 드러납니다. Get-Transaction 명령을 
      입력하면 Get-Transaction은 항상 한 트랜잭션 개체만 가져옵니다. 이 개체는 활성 트랜잭션을 
      나타내는 개체입니다. 

      다른 트랜잭션을 관리하려면 먼저 활성 트랜잭션을 커밋하거나 롤백하여 완료해야 합니다. 이렇게 하면 
      이전 트랜잭션이 자동으로 활성화됩니다. 트랜잭션은 시작된 순서와 반대로 활성화되므로 가장 최근에 
      시작된 트랜잭션이 항상 활성 트랜잭션이 됩니다.


  가입자 및 독립 트랜잭션

      다른 트랜잭션이 진행 중일 때 트랜잭션을 시작하는 경우 Windows PowerShell은 기본적으로 새 트랜잭션을 
      시작하지 않습니다. 대신 현재 트랜잭션에 "가입자"를 추가합니다.

      트랜잭션에 다중 가입자가 포함된 경우 어느 시점에서든 Undo-Transaction 명령을 한 번 실행하면 
      모든 가입자의 전체 트랜잭션이 롤백됩니다. 그러나 트랜잭션을 커밋하려면 각 가입자에 대해 
      Complete-Transaction 명령을 입력해야 합니다.

      트랜잭션에 대한 가입자 수를 찾으려면 트랜잭션 개체의 SubscriberCount 속성을 확인합니다. 예를 들어 
      다음 명령은 Get-Transaction cmdlet을 사용하여 활성 트랜잭션의 SubscriberCount 속성 값을 가져옵니다.

          (Get-Transaction).SubscriberCount
        
      다른 트랜잭션이 진행 중일 때 시작된 대부분의 트랜잭션이 원본 트랜잭션과 관련되어 있기 때문에 가입자 
      추가는 기본 동작입니다. 일반적인 모델에서 트랜잭션이 포함된 스크립트는 자체 트랜잭션이 포함된 
      도우미 트랜잭션을 호출합니다. 이러한 트랜잭션은 관련되어 있기 때문에 하나의 단위로 롤백되거나 
      커밋되어야 합니다.

      그러나 Start-Transaction cmdlet의 Independent 매개 변수를 사용하여 현재 트랜잭션과 독립적인 
      트랜잭션을 시작할 수 있습니다.

      독립 트랜잭션을 시작할 때 Start-Transaction은 새 트랜잭션 개체를 만들며, 새 트랜잭션이 활성 
      트랜잭션이 됩니다. 독립 트랜잭션은 원본 트랜잭션에 영향을 주지 않고 커밋되거나 롤백될 수 있습니다.

      독립 트랜잭션이 완료(커밋 또는 롤백)되면 원본 트랜잭션이 다시 활성 트랜잭션이 됩니다.


  데이터 변경

      트랜잭션을 사용하여 데이터를 변경하는 경우 트랜잭션의 영향을 받는 데이터는 트랜잭션을 커밋할 때까지 
      변경되지 않습니다. 그러나 트랜잭션에 속하지 않은 명령을 사용하여 동일한 데이터를 변경할 수 있습니다. 

      트랜잭션을 사용하여 공유 데이터를 관리하는 경우 이를 명심하십시오. 일반적으로 데이터베이스에는 
      데이터로 작업 중일 때 다른 사용자와 다른 명령, 스크립트 및 함수가 데이터를 변경하지 못하도록 해당 
      데이터를 잠그는 메커니즘이 있습니다.

      그러나 잠금은 데이터베이스의 기능이며 트랜잭션과는 관련이 없습니다. 트랜잭션 가능 파일 시스템이나 
      다른 데이터 저장소에서 작업하는 경우 트랜잭션이 진행 중일 때 데이터를 변경할 수 있습니다.


예제
    이 섹션의 예제에서는 Windows PowerShell 레지스트리 공급자를 사용하며 사용자가 이 공급자에 대해 잘 
    알고 있다고 가정합니다. 레지스트리 공급자에 대한 자세한 내용을 보려면 "get-help registry"를 
    입력하십시오.

  예제 1: 트랜잭션 커밋

    트랜잭션을 만들려면 Start-Transaction cmdlet을 사용합니다. 다음 명령은 기본 설정을 사용하여 
    트랜잭션을 시작합니다.
 
 	start-transaction

    트랜잭션에 명령을 포함하려면 이 cmdlet의 UseTransaction 매개 변수를 사용합니다. 기본적으로 명령은 
    트랜잭션에 포함되지 않습니다. 

    예를 들어 HKCU: 드라이브의 Software 키에서 현재 위치를 설정하는 다음 명령은 트랜잭션에 포함되지 
    않습니다.

        cd hkcu:\Software

    MyCompany 키를 만드는 다음 명령은 New-Item cmdlet의 UseTransaction 매개 변수를 사용하여 활성 
    트랜잭션에 명령을 포함합니다.

        new-item MyCompany -UseTransaction

    이 명령은 새 키를 나타내는 개체를 반환하지만 명령이 트랜잭션에 속하기 때문에 레지스트리가 아직 
    변경되지 않습니다.

        하이브: HKEY_CURRENT_USER\Software

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


    트랜잭션을 커밋하려면 Complete-Transaction cmdlet을 사용합니다. 이 명령은 항상 활성 트랜잭션에 
    영향을 미치지 때문에 사용자가 트랜잭션을 지정할 수 없습니다.

	complete-transaction  


    결과적으로 MyCompany 키가 레지스트리에 추가됩니다.

	dir m*
       
        하이브: HKEY_CURRENT_USER\software

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


  예제 2: 트랜잭션 롤백

    트랜잭션을 만들려면 Start-Transaction cmdlet을 사용합니다. 다음 명령은 기본 설정을 사용하여 
    트랜잭션을 시작합니다.
 
 	start-transaction

    MyOtherCompany 키를 만드는 다음 명령은 New-Item cmdlet의 UseTransaction 매개 변수를 사용하여 
    활성 트랜잭션에 명령을 포함합니다.

        new-item MyOtherCompany -UseTransaction

    이 명령은 새 키를 나타내는 개체를 반환하지만 명령이 트랜잭션에 속하기 때문에 레지스트리가 아직 
    변경되지 않습니다.

        하이브: HKEY_CURRENT_USER\Software

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


    트랜잭션을 롤백하려면 Undo-Transaction cmdlet을 사용합니다.
    이 명령은 항상 활성 트랜잭션에 영향을 미치지 때문에 사용자가 트랜잭션을 지정하지 않습니다.

	Undo-transaction  

    결과는 MyOtherCompany 키가 레지스트리에 추가되지 않은 것으로 나타납니다.

	dir m*
       
        하이브: HKEY_CURRENT_USER\software

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


 
  예제 3: 트랜잭션 미리 보기

    일반적으로 트랜잭션에서 사용되는 명령은 데이터를 변경합니다. 그러나 데이터를 가져오는 명령은 
    트랜잭션 내의 데이터를 가져오기 때문에 트랜잭션에서도 유용합니다. 이러한 명령을 사용하면 트랜잭션을 
    커밋할 경우 발생하는 변경 내용을 미리 볼 수 있습니다.

    다음 예제에서는 Get-ChildItem 명령(별칭은 "dir"임)을 사용하여 트랜잭션의 변경 내용을 미리 보는 
    방법을 보여 줍니다.


    다음 명령은 트랜잭션을 시작합니다.

	start-transaction

    다음 명령은 New-ItemProperty cmdlet을 사용하여 MyKey 레지스트리 항목을 MyCompany 키에 
    추가합니다. 이 명령은 UseTransaction 매개 변수를 사용하여 트랜잭션에 명령을 포함합니다.


        new-itemproperty -path MyCompany -Name MyKey -value 123 -UseTransaction

    이 명령은 새 레지스트리 항목을 나타내는 개체를 반환하지만 레지스트리 항목은 변경되지 않습니다.

        MyKey
        -----
        123


    레지스트리에 현재 있는 항목을 가져오려면 UseTransaction 매개 변수 없이 Get-ChildItem 
    명령("dir")을 사용합니다. 다음 명령은 "M"으로 시작하는 항목을 가져옵니다.

	dir m*


    결과는 MyCompany 키에 항목이 아직 추가되지 않은 것으로 나타납니다.

        하이브: HKEY_CURRENT_USER\Software

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


    트랜잭션을 커밋하는 효과를 미리 보려면 UseTransaction 매개 변수와 함께 Get-ChildItem("dir") 
    명령을 입력합니다. 이 명령은 트랜잭션 내에서의 데이터를 보여 줍니다.


	dir m* -useTransaction


    결과는 트랜잭션이 커밋되면 MyKey 항목이 MyCompany 키에 추가되는 것으로 나타납니다.


        하이브: HKEY_CURRENT_USER\Software

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


     
  예제 4: 트랜잭션 명령과 비트랜잭션 명령 결합

    트랜잭션 중에 비트랜잭션 명령을 입력할 수 있습니다. 비트랜잭션 명령은 데이터에 즉시 영향을 미치지만 
    트랜잭션에는 영향을 미치지 않습니다.

    다음 명령은 HKCU:\Software 레지스트리 키에서 트랜잭션을 시작합니다.

	start-transaction


    다음 세 명령은 New-Item cmdlet을 사용하여 레지스트리에 키를 추가합니다. 첫 번째 명령과 세 번째 명령은 
    UseTransaction 매개 변수를 사용하여 트랜잭션에 명령을 포함합니다. 두 번째 명령은 이 매개 변수를 
    생략합니다. 두 번째 명령은 트랜잭션에 포함되지 않기 때문에 즉시 적용됩니다.

        new-item MyCompany1 -UseTransaction

        new-item MyCompany2

        new-item MyCompany3 -UseTransaction


    레지스트리의 현재 상태를 보려면 UseTransaction 매개 변수 없이 Get-ChildItem("dir") 명령을 사용합니다. 
    이 명령은 "M"으로 시작하는 항목을 가져옵니다.

	dir m*

    결과는 MyCompany2 키가 레지스트리에 추가되었지만 트랜잭션에 속한 MyCompany1 및 MyCompany3 키는 
    추가되지 않은 것으로 나타납니다.
     
        하이브: HKEY_CURRENT_USER\Software

        SKC  VC Name                           Property
        ---  -- ----                           --------
        83   1 Microsoft                      {(default)}
         0   0 MyCompany2                      {}


    다음 명령은 트랜잭션을 커밋합니다. 

        complete-transaction

    이제 트랜잭션의 일부로 추가된 키가 레지스트리에 나타납니다.

	dir m*

     
        하이브: HKEY_CURRENT_USER\Software

        SKC  VC Name                           Property
        ---  -- ----                           --------
        83   1 Microsoft                      {(default)}
        0    0 MyCompany1                     {}
        0    0 MyCompany2                     {}
        0    0 MyCompany3                     {}


  예제 5: 자동 롤백 사용

    트랜잭션의 명령에서 어떠한 종류이든 오류가 생성되면 트랜잭션이 자동으로 롤백됩니다. 

    이 기본 동작은 트랜잭션을 실행하는 스크립트에 사용하도록 설계되었습니다. 스크립트는 대개 충분히 
    테스트되었고 오류 처리 논리를 포함하므로 오류가 예상되지 않으며 오류가 발생하면 트랜잭션이 
    종료되어야 합니다. 

    첫 번째 명령은 HKCU:\Software 레지스트리 키에서 트랜잭션을 시작합니다.

	start-transaction

    다음 명령은 New-Item cmdlet을 사용하여 MyCompany 키를 레지스트리에 추가합니다. 이 명령은 
    UseTransaction 매개 변수(별칭은 "usetx"임)를 사용하여 트랜잭션에 명령을 포함합니다.

	New-Item MyCompany -UseTX

    MyCompany 키가 레지스트리에 이미 있기 때문에 명령이 실패하고 트랜잭션이 롤백됩니다. 

        New-Item : 이 경로에 키가 이미 있습니다. 
        줄:1 문자:9
        + new-item <<<< MyCompany -usetx

    Get-Transaction 명령은 트랜잭션이 롤백되었고 SubscriberCount가 0임을 확인합니다.

        RollbackPreference   SubscriberCount   Status
        ------------------   ---------------   ------
        Error                0                 RolledBack 


        
  예제 6: 롤백 기본 설정 변경

    트랜잭션의 오류 허용도를 높이려는 경우 Start-Transaction의 RollbackPreference 매개 
    변수를 사용하여 기본 설정을 변경할 수 있습니다.

    다음 명령은 롤백 기본 설정 "Never"를 사용하여 트랜잭션을 시작합니다.

         start-transaction -rollbackpreference Never

    이 경우 명령이 실패하면 트랜잭션이 자동으로 롤백되지 않습니다.

	New-Item MyCompany -UseTX

        New-Item : 이 경로에 키가 이미 있습니다. 
        줄:1 문자:9
        + new-item <<<< MyCompany -usetx
   
     
    트랜잭션이 여전히 활성화되어 있기 때문에 트랜잭션의 일부로 명령을 다시 전송할 수 있습니다. 

	New-Item MyOtherCompany -UseTX



  예제 7: USE-TRANSACTION cmdlet 사용

    Use-Transaction cmdlet을 사용하면 트랜잭션 가능 Microsoft .NET Framework 개체에 대해 직접 스크립팅을 
    수행할 수 있습니다. Use-Transaction은 Microsoft.PowerShell.Commands.Management.TransactedString 
    클래스의 인스턴스와 같은 트랜잭션 가능 .NET Framework 개체를 사용하는 식과 명령만 포함할 수 있는 
    스크립트 블록을 사용합니다.

    다음 명령은 트랜잭션을 시작합니다.

         start-transaction

    다음 New-Object 명령은 TransactedString 클래스의 인스턴스를 만들어 $t 변수에 저장합니다.

         $t = New-Object Microsoft.PowerShell.Commands.Management.TransactedString

    다음 명령은 TransactedString 개체의 Append 메서드를 사용하여 텍스트를 문자열에 추가합니다. 이 명령은 
    트랜잭션의 일부가 아니므로 변경 내용이 즉시 적용됩니다.

	 $t.append("Windows") 

    다음 명령은 동일한 Append 메서드를 사용하여 텍스트를 추가하지만 트랜잭션의 일부로 텍스트를 
    추가합니다. 이 명령은 중괄호로 묶이며 Use-Transaction의 ScriptBlock 매개 변수 값으로 설정됩니다. 
    UseTransaction 매개 변수(UseTx)는 필수 항목입니다.

	 use-transaction {$t.append(" PowerShell")} -usetx

    $t에 있는 트랜잭션 문자열의 현재 내용을 보려면 TransactedString 개체의 ToString 메서드를 사용합니다.
                 
	 $t.tostring()   

    출력은 비트랜잭션 변경 내용만 적용된 것으로 표시됩니다.

	 Windows	

    트랜잭션 내에서 $t에 있는 트랜잭션 문자열의 현재 내용을 보려면 Use-Transaction 명령에 식을 포함합니다. 

	 use-transaction {$s.tostring()} -usetx   

    출력에는 트랜잭션 보기가 표시됩니다.

	 Windows PowerShell

    다음 명령은 트랜잭션을 커밋합니다.

	 complete-transaction

    최종 문자열을 보려면 다음을 수행하십시오.

	 $t.tostring()
	
	 Windows PowerShell


  예제 7: 다중 가입자 트랜잭션 관리

    다른 트랜잭션이 진행 중일 때 트랜잭션을 시작하는 경우 Windows PowerShell은 기본적으로 두 번째 
    트랜잭션을 만들지 않습니다. 대신 현재 트랜잭션에 가입자를 추가합니다. 

    이 예제에서는 다중 가입자 트랜잭션을 보고 관리하는 방법을 보여 줍니다.

    HKCU:\Software 키에서 트랜잭션을 시작하여 시작합니다.
	
        start-transaction
    
    다음 명령은 Get-Transaction 명령을 사용하여 활성 트랜잭션을 가져옵니다.

	get-transaction


    결과에는 활성 트랜잭션을 나타내는 개체가 표시됩니다.

        RollbackPreference   SubscriberCount   Status
        ------------------   ---------------   ------
        Error                1                 Active 
     
    다음 명령은 MyCompany 키를 레지스트리에 추가합니다.이 명령은 UseTransaction 매개 변수를 
    사용하여 트랜잭션에 명령을 포함합니다.
                 
        new-item MyCompany -UseTransaction


    다음 명령은 Start-Transaction 명령을 사용하여 트랜잭션을 시작합니다. 이 명령이 명령 프롬프트에서 
    입력되지만 이 시나리오는 트랜잭션이 포함된 스크립트를 실행할 때 발생할 가능성이 높습니다.

        start-transaction


    Get-Transaction 명령은 트랜잭션 개체에 대한 가입자 수가 늘어났음을 보여 줍니다. 값은 이제 2입니다.   

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


    다음 명령은 New-ItemProperty cmdlet을 사용하여 MyKey 레지스트리 항목을 MyCompany 키에 
    추가합니다. 이 명령은 UseTransaction 매개 변수를 사용하여 트랜잭션에 명령을 포함합니다.

        new-itemproperty -path MyCompany -name MyKey -UseTransaction


    MyCompany 키가 레지스트리에 없지만 두 명령이 동일한 트랜잭션에 속하기 때문에 이 명령은 성공합니다.

    다음 명령은 트랜잭션을 커밋합니다. 이 명령이 트랜잭션을 롤백한 경우 모든 가입자의 트랜잭션이 
    롤백됩니다.

	complete-transaction


    Get-Transaction 명령은 트랜잭션 개체에 대한 가입자 수가 1이지만 Status 값은 여전히 
    Active(Committed가 아님)임을 보여 줍니다.   


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


    트랜잭션 커밋을 완료하려면 두 번째 Complete-Transaction 명령을 입력합니다. 다중 가입자 트랜잭션을 
    커밋하려면 Start-Transaction 명령마다 하나씩 Complete-Transaction 명령을 입력해야 합니다.

     	complete-transaction

      
    또 다른 Get-Transaction 명령은 트랜잭션이 커밋되었음을 보여 줍니다.


        RollbackPreference   SubscriberCount   Status
        ------------------   ---------------   ------
        Error                0                 Committed 


  예제 8: 독립 트랜잭션 관리

    다른 트랜잭션이 진행 중일 때 트랜잭션을 시작하면 Start-Transaction의 Independent 매개 변수를 
    사용하여 새 트랜잭션을 원본 트랜잭션과 독립적으로 만듭니다.

    이렇게 하면 Start-Transaction은 새 트랜잭션 개체를 만들고 새 트랜잭션을 활성 트랜잭션으로 
    만듭니다.

    HKCU:\Software 키에서 트랜잭션을 시작하여 시작합니다.
	
        start-transaction
     
    다음 명령은 Get-Transaction 명령을 사용하여 활성 트랜잭션을 가져옵니다.

	get-transaction


    결과에는 활성 트랜잭션을 나타내는 개체가 표시됩니다.

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

     
    다음 명령은 MyCompany 레지스트리 키를 트랜잭션의 일부로 추가합니다. 이 명령은 UseTransaction 매개 
    변수(UseTx)를 사용하여 활성 트랜잭션에 명령을 포함합니다.

	new-item MyCompany -use


    다음 명령은 새 트랜잭션을 시작합니다. 이 명령은 Independent 매개 변수를 사용하여 이 트랜잭션이 활성 
    트랜잭션에 대한 가입자가 아니도록 지정합니다.

         start-transaction -independent

    독립 트랜잭션을 만들 때 새(가장 최근에 만든) 트랜잭션이 활성 트랜잭션이 됩니다. Get-Transaction 
    명령을 사용하여 활성 트랜잭션을 가져올 수 있습니다. 

	get-transaction

    트랜잭션의 SubscriberCount가 1이므로 다른 가입자가 없고 트랜잭션이 새 트랜잭션임을 알 수 있습니다.

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

    원본 트랜잭션을 관리하려면 새 트랜잭션을 완료(커밋 또는 롤백)해야 합니다.

    다음 명령은 MyOtherCompany 키를 레지스트리에 추가합니다.
    이 명령은 UseTransaction 매개 변수(UseTx)를 사용하여 활성 트랜잭션에 명령을 포함합니다.

        new-item MyOtherCompany -usetx

    이제 트랜잭션을 롤백합니다. 가입자가 둘인 트랜잭션이 하나 있는 경우 트랜잭션을 롤백하면 모든 
    가입자의 전체 트랜잭션이 롤백됩니다.

    그러나 이러한 트랜잭션이 독립적이기 때문에 최신 트랜잭션을 롤백하면 레지스트리 변경이 취소되고 원본 
    트랜잭션은 활성 트랜잭션이 됩니다.

        undo-transaction

    Get-Transaction 명령은 원본 트랜잭션이 세션에서 여전히 활성 트랜잭션임을 확인합니다.


	get-transaction

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

    다음 명령은 활성 트랜잭션을 커밋합니다.

        complete-transaction


    Get-ChildItem 명령은 레지스트리가 변경되었음을 보여 줍니다.

	dir m*


        하이브: HKEY_CURRENT_USER\Software

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

참고 항목
    Start-Transaction
    Get-Transaction
    Complete-Transaction
    Undo-Transaction
    Use-Transaction
    레지스트리(공급자)
    about_Providers
    Get-PSProvider
    Get-ChildItem

	




목차