SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

PowerShell 2.0の新機能

PowerShell 2.0の新機能(5)
――トランザクション編

PowerShell 2.0のトランザクション処理


  • X ポスト
  • このエントリーをはてなブックマークに追加

トランザクションへのコマンドの追加

 トランザクションの開始方法が分かりました。次はトランザクションにコマンドを追加する方法について説明します。

 トランザクションにコマンドを追加するには、Use-Transactionコマンドレットを使用するか、UseTransaction パラメーターを持つコマンドレットを使用します。

 Use-Transactionコマンドレットは、スクリプトブロックを有効なトランザクションに追加することができます。ただし、スクリプトブロックに追加できるかは、Microsoft.PowerShell.Commands.Management.TransactedStringクラス(※1)のインスタンス等の.NET Frameworkオブジェクトと制限されています。

 リスト2はUse-Transaction コマンドレットを使用する例です。最初に、TransactedStringクラスのインスタンスを作成し、$TS変数に保存します。

 次にUse-Transaction コマンドレットを使用して、$TS変数に文字を追加しています。このようにUse-Transactionを使用して実行したコマンドは、コミット処理を行って初めて反映されます。

リスト2 Use-Transactionコマンドレットの使用例
#トランザクションの開始
Start-Transaction


#TransactedStringインスタンスの作成
$TS = New-Object Microsoft.PowerShell.Commands.Management.TransactedString


#トランザクションへスクリプトブロックを追加
Use-Transaction {$TS.append("Hello PowerShell")} -UseTransaction


#トランザクションのコミット(詳細は後述)
Complete-Transaction

 次に、UseTransaction パラメーターを持つコマンドレットの使用例を見てみましょう。Use-Transactionパラメーターを持つコマンドレットの調べ方は「トランザクション用コマンドレット」の項でも述べたとおり

トランザクションで使用可能なコマンドレットの検索
Get-Help * -parameter UseTransaction

と入力します。

  リスト3はUseTransactionパラメーターを持つNew-Itemコマンドレットを使用する例です(レジストリを操作しますので、実行には十分気をつけてください)。

 はじめにHKCU\Softwareに移動し、トランザクションを開始します。次にMySoftwareというレジストリキーを作成し、MyKeyというキーを作成します。最後にUndo-Transactionコマンドレットを使用して、一連の処理をロールバックします(Undo-Transactionについては後述します)。

リスト3 -UseTransactionパラメーターの使用例
C:\PS>cd hkcu:\software
PS HKCU:\software> Start-Transaction
PS HKCU:\software> New-Item MySoftware -UseTransaction
PS HKCU:\software> New-ItemProperty MySoftware -name MyKey -value 123 -UseTransaction
PS HKCU:\software> Undo-Transaction
※1

 Microsoft.PowerShell.Commands.Management.TransactedStringクラスは、文字列をトランザクション操作するクラス。

トランザクションのロールバック

 次にトランザクションをロールバックする方法について説明します。

 ロールバックとは、トランザクションで実行した一連のコマンドを、実行しなかったことにするものです。ただし、すでにコミットされたトランザクションはロールバックすることができないので注意が必要です。ロールバックを行うにはUndo-Transactionコマンドレットを使用する方法とStart-Transactionに-RollbackPreferenceを使用する方法があります。

 Undo-Transactionコマンドレットは次の書式で実行します。

Undo-Transactionの書式
Undo-Transaction

 ここで、先ほどのリスト3をもう一度見てください。一番最後の行のUndo-Transactionが実行されると、Start-Transaction以降に実行したコマンドのすべてを実行しなかったものとして処理を行います。

次のページ
トランザクションのコミット

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
PowerShell 2.0の新機能連載記事一覧

もっと読む

この記事の著者

HIRO(ヒロ)

HIRO's.NETのHIROです。とある半導体工場のSEです。VB.NET, C#, PowerShellによるプログラミングを楽しんでいます。最近はBlog でPowerShellについて書いています。2008/07/07にPowerShell from Japan!!というサイトを立ち上げまし...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4944 2010/03/23 19:58

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング