SQL*PLUSもどきを作る その1(PowerShell Tips) で紹介した関数PSOracleの説明です。
まずは使用方法ですが、コマンドラインで
PS > PSOracle
と入力します。すると「ユーザー名「パスワード」「接続先」を聞かれるので順に入力します。
ユーザー名を入力してください: scott
パスワードを入力してください: *****
接続先を入力してください: server01
Oracle 8i Release 8.1.7.1.1 -Production
うまく接続ができると、接続先のサーバーのバージョンが表示されます。
ちなみに、コマンドラインで
PS > PSOracle -?
とすると使用方法が表示されます。
では、順を追って解説していきたいと思います。
1.PSOracle用ライブラリの読み込み
PSOracle関数を呼び出すと、最初にMy Documents\WindowsPowerShell\Oracle フォルダ内にある*.ps1ファイルを読み込み、PowerShellに関数を登録します。
こうすることで、PSOracleが実行されたときに、必要な関数を登録します。
SQL*PLUSもどきで必要な関数を*.ps1ファイル化して、このフォルダに置くことで、PSOracleを拡張していくことを可能にしてます。
動的にPowerShellに関数を登録するには呼び出し演算子(&)を使用して登録しています。
2.ユーザーからの情報取得
ユーザーから情報を取得するにはRead-Hostコマンドレットを使用します。
パスワードに関しては、入力した文字が丸見えでは困るので -assecurestring パラメータを付加しています。こうすることで入力した文字は*で表示されます。
3.グローバル変数の作成
PSOracleの関数を抜けてしまうと、ユーザーから取得した接続先情報が失われてしまうのでグローバル変数に登録します。
グローバル変数の作成は Set-Variableコマンドレットを使用して -Scopeパラメータで"Global"を使用します。
ここで作成した変数に、ユーザーから取得した情報をセットすることで、関数を抜けた後でも再利用できるようにしています。
4.Oracleへ接続する
Oracleへの接続はOracleClientを使用しています。
PSOracleが読み込まれたときに、System.Data.OracleClientをロードして使用可能にしています。
接続文字列は、自作関数 Get-OracleConnectionString(次回説明予定)で作成しています。この接続情報を元にOracleへ接続してサーバ情報を取得するSQL文を実行しデータセットへ結果を取得します。
5.エラートラップ
接続時のエラートラップは trap {} で行います。
これはVB.NETやC#でいうところのcatchの部分に相当します。 VB.NETやC#を扱っているとtry部分がないのが気になるところです。 関数内で例外が発生すると trap 部分が処理されます。