はじめに
PowerShell 2.0からトランザクションがサポートされました。これにより、関連する複数の処理を一単位としてまとめ、その一連の処理を「すべて成功」か「すべて失敗」かを保証することができます。
今回はPowerShell 2.0におけるトランザクション処理について説明します。
対象読者
- PowerShellの基本的な操作ができる方。
PowerShellについて学びたい方は、PowerShell入門の連載を参照ください。
実行環境
- PowerShell 2.0
トランザクション用コマンドレット
PowerShell 2.0では表1に示すトランザクション専用のコマンドレットが準備されています。
コマンドレット | 説明 |
Start-Transaction | 新しいトランザクションを開始する |
Use-Transaction | トランザクションにコマンドまたは式を追加する |
Undo-Transaction | トランザクションをロールバックしてデータが変更されないようにする |
Complete-Transaction | トランザクションをコミットする。トランザクション対象が変更される |
Get-Transaction | アクティブなトランザクションに関する情報を取得する |
PowerShell 2.0は200を超すコマンドレットが標準搭載されていますが、すべてのコマンドレットをトランザクションで使用できるわけではありません。トランザクションを使用するには、コマンドレットとプロバイダーがトランザクションをサポートしている必要があります。
トランザクションで使用可能なコマンドレットは、次のように入力することで探すことができます。
Get-Help * -parameter UseTransaction
また、トランザクションをサポートするプロバイダーは、次のように入力することで探すことができます。
Get-PSProvider | Where {$_.Capabilities -like "*transactions*"}
実行結果を見ると分かるように、Windows PowerShell レジストリ プロバイダーがトランザクションをサポートしていることが分かります。
トランザクションの開始
トランザクションを開始するには、Start-Transaction
コマンドレットを使用します。Start-Transaction
コマンドレットの基本構文は次の通りです(ほかにも使用可能なパラメーターがあります。詳細はヘルプを参照ください)。
Start-Transaction [-RollbackPreference {<Error> | <TerminatingError> | <Never>}]
-RollbackPreference
パラメーターを使用すると、トランザクションが自動的にロールバックする条件を指定することができます。-RollbackPreference
に指定できる値は次の通りです。
値 | 説明 |
Error | 終了エラーまたは未終了エラーが発生した場合、トランザクションを自動的にロールバックさせる |
TerminatingError | 終了エラーが発生した場合、トランザクションを自動的にロールバックさせる |
Never | トランザクションを自動的にロールバックさせない |
-RollbackPreference
パラメーターを省略した場合には、既定値として"Error"が割り当てられます。
リスト1はHKCU\Software(HKEY_CURRENT_USER
レジストリのSoftware
)に移動後、トランザクションを開始します。
PS> cd HKCU:\oftware PS> Start-Transaction