Complete-Transaction
認可使用中的交易。
語法
Complete-Transaction
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
Cmdlet Complete-Transaction
會認可使用中的交易。 當您認可交易時,交易中的命令會完成,並變更受命令影響的數據。
如果交易包含多個訂閱者,若要認可交易,您必須為每個Start-Transaction
命令輸入一個Complete-Transaction
命令。
Cmdlet Complete-Transaction
是一組 Cmdlet,可支援 Windows PowerShell 中的交易功能。
如需詳細資訊,請參閱 about_Transactions。
範例
範例 1:認可交易
Set-Location hkcu:\software
Start-Transaction
New-Item MyCompany -UseTransaction
Get-ChildItem m*
Hive: HKEY_CURRENT_USER\software
SKC VC Name Property
--- -- ---- --------
82 1 Microsoft {(default)}
Complete-Transaction
Get-ChildItem 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 參數,在交易中包含命令。
第一個 Get-ChildItem
命令顯示新的專案尚未新增至登錄。
命令 Complete-Transaction
會認可交易,讓登錄變更生效。 因此,第二個 Get-ChildItem
命令會顯示登錄已變更。
範例 2:認可擁有多個訂閱者的交易
Set-Location hkcu:\software
Start-Transaction
New-Item MyCompany -UseTransaction
Hive: HKEY_CURRENT_USER\Software
SKC VC Name Property
--- -- ---- --------
0 0 MyCompany {}
Start-Transaction
Get-Transaction
RollbackPreference SubscriberCount Status
------------------ --------------- ------
Error 2 Active
New-ItemProperty -Path MyCompany -Name MyKey -Value -UseTransaction
MyKey
-----
123
Complete-Transaction
Get-Transaction
RollbackPreference SubscriberCount Status
------------------ --------------- ------
Error 1 Active
Get-ChildItem m*
Hive: HKEY_CURRENT_USER\Software
SKC VC Name Property
--- -- ---- --------
82 1 Microsoft {(default)}
Complete-Transaction
Get-ChildItem 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 金鑰新增至軟體密鑰。 New-Item
雖然 Cmdlet 會傳回機碼物件,但登錄中的數據尚未變更。
第二 Start-Transaction
個命令會將第二個訂閱者新增至現有的交易。 Cmdlet Get-Transaction
會確認訂閱者計數為 2。 具有UseTransaction 參數的New-ItemProperty 命令會將登錄專案新增至新的 MyCompany 機碼。 同樣地,命令會傳回值,但登錄不會變更。
第一個 Complete-Transaction
命令會將訂閱者計數減少 1。 此命令會確認這一點 Get-Transaction
。 不過,不會變更任何數據,如命令所 Get-ChildItem m*
辨識。
第二個 Complete-Transaction
命令會認可整個交易,並變更登錄中的數據。 第二 Get-ChildItem m*
個命令會確認此動作,其中顯示變更。
範例 3:執行不會變更任何數據的交易
Set-Location hkcu:\software
Start-Transaction
New-Item MyCompany -UseTransaction
Get-ChildItem m*
Hive: HKEY_CURRENT_USER\Software
SKC VC Name Property
--- -- ---- --------
82 1 Microsoft {(default)}
Get-ChildItem m* -UseTransaction
Hive: HKEY_CURRENT_USER\Software
SKC VC Name Property
--- -- ---- --------
82 1 Microsoft {(default)}
0 0 MyCompany {}
Complete-Transaction
此範例顯示使用 Get-* 命令,以及交易中未變更數據的其他命令的值。 Get-\*
當命令用於交易時,它會取得屬於交易一部分的物件。 這可讓您在認可變更之前預覽交易中的變更。
在此範例中,會啟動交易。 具有 UseTransaction 參數的New-Item命令會將新的機碼新增至登錄,做為交易的一部分。
因為新的登錄機碼不會加入登錄,直到 Complete-Transaction
命令執行為止,簡單的 Get-ChildItem
命令會顯示沒有新機碼的登錄。
不過,當您將 UseTransaction 參數新增至 Get-ChildItem
命令時,命令會成為交易的一部分,即使尚未新增至數據,它也會取得交易中的專案。
參數
-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 不會產生任何輸出。
備註
您無法回復已認可的交易,或認可已回復的交易。
您無法復原使用中交易以外的任何交易。 若要回復不同的交易,您必須先認可或回復使用中的交易。
根據預設,如果無法認可交易的任何部分,例如當交易中的命令產生錯誤時,就會回復整個交易。