Complete-Transaction
有効なトランザクションをコミットします。
構文
Complete-Transaction
[-WhatIf]
[-Confirm]
[<CommonParameters>]
説明
このコマンドレットは Complete-Transaction
、アクティブなトランザクションをコミットします。 トランザクションをコミットすると、トランザクション内のコマンドの最終処理が実行され、コマンドの対象のデータが変更されます。
トランザクションに複数のサブスクライバーが含まれている場合、トランザクションをコミットするには、コマンドごとに Start-Transaction
1 つのComplete-Transaction
コマンドを入力する必要があります。
この Complete-Transaction
コマンドレットは、Windows PowerShell のトランザクション機能をサポートする一連のコマンドレットの 1 つです。
詳細については、「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
コミットするとどうなるかを示します。
このコマンドは Start-Transaction
、トランザクションを開始します。 New-Item コマンドは、UseTransaction パラメーターを使用して、トランザクションにコマンドを含めます。
最初 Get-ChildItem
のコマンドは、新しい項目がまだレジストリに追加されていないことを示しています。
このコマンドによって Complete-Transaction
トランザクションがコミットされ、レジストリの変更が有効になります。 その結果、2 番目 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
1 つのComplete-Transaction
コマンドを入力する必要があります。 データは、最後 Complete-Transaction
のコマンドが送信されたときにのみ変更されます。
具体的な方法を示すために、この例ではコマンド ラインに入力される一連のコマンドを示します。 実際には通常、トランザクションはスクリプト内で実行され、メイン スクリプトによって呼び出される関数または補助的なスクリプトによって実行される 2 次的なトランザクションを伴います。
この例では、コマンドによって Start-Transaction
トランザクションが開始されます。 New-Item
UseTransaction パラメーターを指定したコマンドは、MyCompany キーをソフトウェア キーに追加します。 コマンドレットは New-Item
キー オブジェクトを返しますが、レジストリ内のデータはまだ変更されていません。
2 番目 Start-Transaction
のコマンドは、既存のトランザクションに 2 番目のサブスクライバーを追加します。 コマンドレットは Get-Transaction
、サブスクライバー数が 2 であることを確認します。 UseTransaction パラメーターを持つ New-ItemProperty コマンドは、新しい MyCompany キーにレジストリ エントリを追加します。 再びコマンドから値が返されますが、レジストリは変更されません。
最初 Complete-Transaction
のコマンドは、サブスクライバー数を 1 ずつ減らします。 これはコマンドによって Get-Transaction
確認されます。 ただし、コマンドによって Get-ChildItem m*
示されているように、データは変更されません。
2 番目 Complete-Transaction
のコマンドは、トランザクション全体をコミットし、レジストリ内のデータを変更します。 これは、変更を示す 2 番目 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
コマンドレットの実行前に確認を求めるメッセージが表示されます。
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WhatIf
コマンドレットの実行時に発生する内容を示します。 このコマンドレットは実行されません。
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
入力
None
このコマンドレットにパイプを使用してオブジェクトを渡すことはできません。
出力
None
このコマンドレットは出力を生成しません。
メモ
コミットされたトランザクションのロールバック、またはロールバックされたトランザクションのコミットを行うことはできません。
有効でないトランザクションはロールバックできません。 別のトランザクションをロールバックするには、有効なトランザクションを先にコミットするかロールバックする必要があります。
既定では、トランザクションのコマンドのエラーなどでトランザクションの一部をコミットできない場合、トランザクション全体がロールバックされます。
関連リンク
PowerShell
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示