Complete-Transaction

認可使用中的交易。

Syntax

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 之前先提示您確認。

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

顯示執行 Cmdlet 後會發生的情況。 未執行 Cmdlet。

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

輸入

None

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

輸出

None

此 Cmdlet 不會產生任何輸出。

備註

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

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

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