Friday, April 25, 2008

この記事は

SQL*PLUSもどきを作る その1(PowerShell Tips)
SQL*PLUSもどきを作る その1の説明(PowerShell Tips)

の続きです。

今回は接続文字列を作成する関数 Get-OracleConnectionStirng関数を紹介します。

関数名が長いので任意のエイリアスを設定したり、直接関数名を変えてください。

関数を下記に示します。

#================================================================================================
# Get-OracleConnectionString: Oracle用接続文字列を作成する
#
# UPDATE: 2008-04-25 Ver.1.0.0
#
# copyright HIRO's.NET(http://hiros-dot.net/)
#================================================================================================
function global:Get-OracleConnectionString([string]$UserID, [object]$Password, [string]$DataSource)
{
    if ($args[0] -eq "-?")
    {
        Write-Host @"
名前:
        Get-OracleConnectionString

概要:
        Oracle用接続文字列を作成します

構文:
        Get-OracleConnectionString [-UserID] [-Password] [-DataSource]

使用方法:
        `$ConnString = (Get-OracleConnectString "User" "Password" "ServerName")
"@ -foregroundcolor Cyan
        return
    }
    
    #パスワードがSecureString型の場合はString型にする
    if ( $Password -is [System.Security.SecureString] )
    {
        $ptr  = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($Password)
        $pass = [System.Runtime.InteropServices.Marshal]::PtrToStringBSTR($ptr);
    }
    else
    {
        $pass = $Password
    }
    
    #接続文字列を作成して返す
    return  "Data Source=$DataSource;User ID=$UserID;Password=$pass;Integrated Security=no;"
}

使用方法は

PS > Get-OracleConnectionString scott tiger OraSvr10g
Data Source=OraSvr10g;User ID=scott;Password=tiger;Integrated Security=no;

関数名の後に「ユーザー名」「パスワード」「接続先を」指定すると接続先文字列を返します。

この接続文字列はOracleClient用のものが作成されます。

また引数の「パスワード」ですが、これにはString型またはSecureString型を渡します。

SecureString型が渡された場合は、関数内部でString型に戻して接続文字列を作成します。

*で伏せられたパスワード文字列も、この関数を通して接続文字列を返すと、上記のようにパスワードが丸見えになりますので使用する場合は注意してください。

今回紹介した関数は SQL*PLUSもどきを作る その1(PowerShell Tips) の中で使用していますので、興味がある方は参考にしてみてください。

Friday, April 25, 2008 9:46:03 PM (Tokyo Standard Time, UTC+09:00)  #    Comments [0]  |  Trackback
Comments are closed.

Theme design by Jelle Druyts

Pick a theme: