« 専用LAN回線 | トップページ | 「ご意見・ご感想」ページを設置しました! »

2010年4月 6日 (火)

CA PowerShell 講座 第3話: レプリケーションをバッチで実行!

マサオミです。Tech Tuesday のお時間です。

いきなりなんですが、このシリーズのタイトルを変更させていただきました。
「タイトルを見てもどんな記事なのかがわからない」と社内で言われたのが
きっかけなんですが・・・なるほど、自分でもわからない・・・ということで
各回の概要をタイトルに付け直しました。(あれ?と思った方、失礼いたしました)
URLは変わっていませんのでブックマークなどには影響ないと思います。

■ 前回までの記事

CA PowerShell 講座 第1話: CA パワーシェルをインストールしよう

CA PowerShell 講座 第2話: CA パワーシェルを使ってみよう

さて今回はいよいよCA XOsoft パワーシェル (以降、CA パワーシェル)を使って
レプリケーションをバッチで実行する方法についてご説明したいと思います。

割と「コマンドそのまま打ってください」・・・という部分もあるかもしれませんが、
その辺はノリと勢いで着いてきてください。

では、「レプリケーションをバッチで実行!」の始まり~。

まず、準備も含めてバッチでレプリケーションを操作するには
以下3つのことを行います。

① (事前準備として) パスワードファイルの生成
② スクリプトの記述
③ Windows Powershell にスクリプトを読み込ませて実行

① パスワードファイルの生成

ログイン時の認証で利用するためのパスワードファイルを作成します。
この作業は事前に1回実行しておけば以降は必要ありません。

Windows PowerShellの考え方にはセキュリティ面への配慮から
スクリプト内に直接パスワードを書き込まない、という暗黙のルールがあるようです。
そのため暗号化されたパスワードファイルを事前に作成します。

では、どうやってやるのか。製品マニュアル「CA XOsoft PowerShellのコマンド 操作ガイド
のP19にも記載があるのですが、ちょっと分かりにくいのでここでも記載しておきます。

Windows PowerShell を起動して以下を実行してください。
なお、パスワードファイルの保存場所は「 C:\ 」に、
ファイル名は「 securestring.txt 」にしようと思います。

PS> Read-Host -AsSecureString | ConvertFrom-SecureString | Out-File C:\securestring.txt (ここでエンターを押す)
******** (←パスワードを入力。終わったらエンターを押す)

こんな感じになります。すると暗号化されたパスワードファイルが C:\ に出来上がります。
コピー&ペースト用にテキストファイルも置いておきます。(ダウンロード: password.txt (0.1K))

② スクリプトの記述

では、次にスクリプトを書いてみましょう。

スクリプトの中でやることも大きく3つ。
STEP1: スナップインの呼び出し
STEP2: 認証オブジェクトの作成
STEP3: コントロールサービスへの接続およびコマンド実行

スクリプトで実行する内容は第2話で実行した、「シナリオを実行する」ことです。
以下のサンプルを見てください。
(左側の数字は行数なので、無視してください)

1: Add-PSSnapin XOPowerShell

2: $pass = cat C:\securestring.txt | convertto-securestring
3: $mycred = new-object -typename System.Management.Automation.PSCredential -argumentlist CA\Administrator, $pass
4: Connect-XO CS $mycred http

5: Run-Scenario FileServer F 1

6: Disconnect-XO

では、解説します。

STEP1: スナップインの呼び出し (1行目)
これは既にインストールしたCA パワーシェルのスナップインの
呼び出しを行っています。スナップインはスクリプトを実行する際に
毎回呼び出してあげなければならないWindows PowerShellの仕様のようです。
とりあえず、おまじないだと思って記述してください。

STEP2: 認証オブジェクトの作成 (2~3行目)
パスワードファイルを一度読み込んで$passというユーザ定義変数(オブジェクト)に格納(2行目)したら
Administratorというユーザ名とパスワード情報のセットを$mycredというオブジェクトに合わせて格納(3行目)します。
ユーザ名と$passの間の「カンマ」は忘れずに。

STEP3: コントロールサービスへの接続およびコマンド実行 (4~6行目)

4行目:
コントロールサービスに認証情報オブジェクト($mycred)を使って接続します。
引数の意味については第2話の xocon の説明を参照ください。
※ xoconは現段階では使えません。理由は次回解説します。

5行目:
シナリオの実行します。こちらもxorunではなく、Run-Scenarioを利用します。
やはり引数の意味については第2話を参照ください。

6行目:
コントロールサービスからの接続を解除します。

この6行をテキストにコピー&ペーストし、ファイルの拡張子を .ps1 にしてください。
ここでは run-scenario.ps1 とします。 (保存場所は C:\ としておきます)

これもダウンロードできるようにしておきます。 (ダウンロード: run-scenario.ps1 (0.3K))

③ Windows Powershell にスクリプトを読み込ませて実行

では、作成したスクリプトをWindows PowerShell に読み込ませてみましょう。

環境に応じて以下のパスのpowershell.exeを使います。

C:\Windows\system32\windowspowershell\v1.0\powershell.exe

または

C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe
※ Windows Server 2008 R2 または Windows 7 (Windows PowerShell 2.0)の場合

パスは省略しますが、実行の仕方は以下のような感じです。
コマンドプロンプトから実行してみてください。

> powershell.exe c:\run-scenario.ps1

接続中 . . .

CS 接続しました。

シナリオ FileServer 開始しています . . .
シナリオ FileServer が正常に実行されました

CS が接続解除されました

>

こんな感じになると思います。

後は簡単です。上記コマンドをバッチファイル(run-scenario.batなど)に
記述して実行するだけです。

もし環境を移動する場合には、パスワードファイル(securestring.txt)と
スクリプトファイル(run-scenario.ps1) も忘れずに持っていってください。

どうです?パワーシェルでも結構簡単でしょ?

え?バッチファイルだけでどうにかならないのかって?
そうですね、バッチファイルだけで何とかしたいですよね。(汗汗

では、次回は「バッチファイル1つでコマンドを実行する」方法について 
解説したいと思います。

See you in next TT . . .

------ Facebook ページ も よろしく! -------

|

« 専用LAN回線 | トップページ | 「ご意見・ご感想」ページを設置しました! »

技術情報」カテゴリの記事

製品について」カテゴリの記事

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/553787/47980729

この記事へのトラックバック一覧です: CA PowerShell 講座 第3話: レプリケーションをバッチで実行!:

« 専用LAN回線 | トップページ | 「ご意見・ご感想」ページを設置しました! »