共用方式為


Complete-Transaction

認可使用中的交易。

語法

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

Description

Complete-Transaction Cmdlet 會認可作用中交易。 當您認可交易時,交易中的命令會完成,並變更受命令影響的數據。

如果交易包含多個訂閱者,若要認可交易,您必須為每個 Start-Transaction 命令輸入一個 Complete-Transaction 命令。

Complete-Transaction Cmdlet 是一組支援 Windows PowerShell 中交易功能的 Cmdlet。 如需詳細資訊,請參閱 about_Transactions。

範例

範例 1:認可交易

PS C:\> 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:認可擁有多個訂閱者的交易

PS C:\> 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 金鑰新增至軟體密鑰。 雖然 New-Item Cmdlet 會傳回索引鍵物件,但登錄中的數據尚未變更。

第二個 Start-Transaction 命令會將第二個訂閱者新增至現有的交易。 Get-Transaction Cmdlet 會確認訂閱者計數為 2。 具有 UseTransaction 參數的 New-ItemProperty 命令會將登錄專案新增至新的 MyCompany 機碼。 同樣地,命令會傳回值,但登錄不會變更。

第一個 Complete-Transaction 命令會將訂閱者計數減少 1。 這是由 get-Transaction 命令 確認。 不過,不會變更任何數據,如 dir m* (Get-ChildItem) 命令所辨識。

第二個 Complete-Transaction 命令會認可整個交易,並變更登錄中的數據。 這是由第二個 dir m* 命令確認,其中顯示變更。

範例 3:執行不會變更任何數據的交易

PS C:\> 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) 命令會顯示沒有新機碼的登錄。

不過,當您將 UseTransaction 參數新增至 dir 命令時,命令會變成交易的一部分,即使它們尚未新增至數據,也會取得交易中的專案。

參數

-Confirm

在執行 Cmdlet 之前,提示您進行確認。

類型:SwitchParameter
別名:cf
Position:Named
預設值:False
必要:False
接受管線輸入:False
接受萬用字元:False

-WhatIf

顯示 Cmdlet 執行時會發生什麼事。 Cmdlet 未執行。

類型:SwitchParameter
別名:wi
Position:Named
預設值:False
必要:False
接受管線輸入:False
接受萬用字元:False

輸入

None

您無法使用管線將物件傳送至此 Cmdlet。

輸出

None

此 Cmdlet 不會產生任何輸出。

備註

  • 您無法回復已認可的交易,或認可已回復的交易。

    您無法復原使用中交易以外的任何交易。 若要回復不同的交易,您必須先認可或回復使用中的交易。

    根據預設,如果無法認可交易的任何部分,例如當交易中的命令產生錯誤時,就會回復整個交易。