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 命令
第二個 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 不會產生任何輸出。
備註
您無法回復已認可的交易,或認可已回復的交易。
您無法復原使用中交易以外的任何交易。 若要回復不同的交易,您必須先認可或回復使用中的交易。
根據預設,如果無法認可交易的任何部分,例如當交易中的命令產生錯誤時,就會回復整個交易。