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