Transaction 系のコマンドレットを使用するとコマンドの処理でトランザクションを使用できる。
以下、トランザクションを使用してレジストリのHKEY_CURRENT_USERにHOGE_KEYを追加するスクリプト
RegTest.Ps1
Start-Transaction Set-Location HKCU:\Software #レジストリにKEYを追加 (-UseTransaction あり) New-Item HOGE_KEY -UseTransaction #コミット Complete-Transaction #ロールバック #Undo-Transaction
上記のComplete-Transaction をコメントアウトし、Undo-Transaction を有効に書き換えると
ロールバックが行われていることが確認できる。(KEYが作成されない)
また、トランザクション配下で行いたい処理には-UseTransaction パラメタを指定する必要がある。
ただし、全ての処理に-UseTransaction パラメタを付けれるわけではなく、
処理によってはトランザクションをサポートしていないものもある。
(現時点:2011/3/2でサポートしているのはレジストリ操作系のみっぽい)
トランザクションをサポートしているプロバイダを調べるにはPowerShellで以下のコマンドを実行するとよい
Get-PSProvider | ? {$_.Capabilities -like "*Transactions*"}
動作確認環境:Windows Server 2008 Sp1