共用方式為


Complete-Transaction

認可現用交易。

語法

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

描述

Complete-Transaction Cmdlet 會認可現用交易。當您認可交易時,會關閉交易中的命令、且變更受命令影響的資料。

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

在支援 Windows PowerShell 交易功能的一組 Cmdlet 集中,Complete-Transaction 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 命令會啟動交易。New-Item 命令使用 UseTransaction 參數,將 MyCompany 機碼加入 Software 機碼。雖然 New-Item 命令會傳回機碼物件,但是登錄中的資料並不會變更。

第二個 Start-Transaction 命令將第二個訂閱者加入現用交易。Get-Transaction 命令會確認訂閱者數量為 2。New-ItemProperty 命令利用 UseTransaction 參數將登錄項目加入新的 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-* 命令使用於交易中時,它會取得屬於該交易的物件。這可以讓您在認可變更之前先預覽交易中的變更。

在這個範例中,交易會啟動。New-Item 命令使用 UseTransaction 參數,將新的機碼加入登錄中,做為交易的一部分。

由於新登錄機碼在 Complete-Transaction 命令執行前,並不會新增到登錄中,因此簡單的 "dir" (Get-ChildItem) 命令會顯示不包含新機碼的登錄。

但是,當您將 UseTransaction 參數加入至 "dir" 命令時,該命令會變成交易的一部分,而且會取得交易中的項目,即使這些項目尚未加入至資料中也是如此。





請參閱

概念

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