すべての構成ファイルに共通のカスタム VBScript コレクターの作成

カスタムの共通 VBScript コレクターを作成するときは、ファイル名に前提条件プロパティーの名前が含まれている必要があります。このファイルは /lib サブディレクトリーに保管する必要があります。このコレクターには、前提条件プロパティーの実際の値を取得するためのコードが含まれています。また、必要に応じ、共通の関数やサブルーチンを使用して、値を取得できます。

始める前に

コレクターを作成する前に、以下の付録に記載されている一連の事前定義済み関数とサブルーチンを必ず確認してください。これらのうちいずれかを使用して実際の値を取得できるかどうかを判別してください。 コレクターによって前提条件プロパティーの存在を検査する必要があるかどうかを判別し、存在する場合は、他にどのような情報を収集する必要があるのかを判別します。その前提条件プロパティーが存在するかどうかに関わらず、各検査によって値が返されるようにする必要があります。例:
  • 製品のホーム・ディレクトリーなどの環境変数が存在するかどうかを検査します。例えば、Tivoli® Common Reporting の場合は TCR_HOME です。
  • 環境変数に、JAR ファイル、バイナリー、またはパスが含まれているかどうかを検査します。例えば、PATH 環境変数の場合は、JRE へのパスが含まれています。
  • 製品のホーム・ディレクトリーなどの環境変数の実際の値を検査します。例えば、Tivoli Common Reporting の場合は TCR_HOME です。
  • 製品がインストールされているかどうかを検査します。
  • 製品のどのバージョンがインストールされているのかを検査します。

手順

  1. VBScript ファイルを作成します。そのファイルを ips_root/lib ディレクトリーに保存します。このとき、以下のファイル命名規則に従った名前を付けます。
    [prefix_identifier.]property_name.vbs
    それぞれの意味は以下のとおりです。
    • prefix_identifier は、表 1 で概要を示した前提条件プロパティーの事前定義済みカテゴリーを表す接頭部 ID です。
    • property_name は、前提条件プロパティー名です。コレクター名に使用されます。
    例えば、mssqlVersion.vbs には、Windows マシン上で MS SQL Server 前提条件プロパティーの実際の値を取得するためのコードが含まれています。
  2. VBScript エディターを使用して、前提条件プロパティーの値を取得するためのコードを追加します。VBScript COM や関数を使用すると、Windows 環境のエレメントにアクセスして、Windows Script Host 環境内で実行できます。以下のように指定して、検査によって標準出力が返されるようにします。
    WScript.Echo "property_name=" & var_for_value
    • property_name は、構成ファイルに記載された前提条件プロパティーを表します。例: env.tcrhome
    • var_for_value は、コレクターがその前提条件プロパティーについて取得する実際の値を表す VBScript 変数です。
    前提条件プロパティー名が env.tcrhome である場合に、TCR_HOME 環境変数が存在し、実際の値が返されるかどうかを検査するには、以下のように指定します。
    set wshShell = WScript.CreateObject("WScript.Shell")
    tcr_home=WshShell.ExpandEnvironmentStrings("%TCR_HOME%")
    WScript.Echo "env.tcrhome=" & tcr_home
    前提条件プロパティー名が env.path.jre である場合に、PATH 変数に JRE が設定されているかどうかを検査するには、以下のように指定します。
    Set wshShell = WScript.CreateObject("WScript.Shell")
    path = WshShell.ExpandEnvironmentStrings("%PATH%")
    Set objRegEx = new RegExp
    objRegEx.Pattern = "(^|([:;¥¥/]))(C:¥Program Files¥IBM¥Java60¥jre¥bin)($|[:;])"
    objRegEx.IgnoreCase = True
    objRegEx.Global = True
    Set matches = objRegEx.Execute(path)
    WScript.Echo "env.path.jre=" & (matches.Count > 0)
    前提条件プロパティー名が installedSoftware.TDI.version である場合に、インストールされている Tivoli Directory Integrator のバージョンを検査するには、以下のように指定します。
    strComputer = "."
    strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
    regDisName = "DisplayName"
    regDisVer = "DisplayVersion"
    
    Set oReg = GetObject("winmgmts:{impersonationLevel=Impersonate}!\\" &
            		strComputer & "\root\default:StdRegProv")
    
    Set sftReg = new RegExp
    sftReg.pattern = "Tivoli Directory Integrator"
    sftReg.Global=False
    oReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys
    For Each subkey In arrSubKeys
        searchkey = strKeyPath & "\" & subkey
        oReg.GetStringValue HKEY_LOCAL_MACHINE, searchkey, regDisName, strName
        oReg.GetStringValue HKEY_LOCAL_MACHINE, searchkey, regDisVer, strVersion
        If Not IsNull(strName) Then
           Set matches = sftReg.Execute(strName)
           If matches.Count > 0 Then
               Wscript.Echo "installedSoftware.TDI.version=" & strVersion
           End If
        End If      
    Next
  3. VBScript コレクターを実行して、実行時エラーが発生しないことを確認し、必要に応じてデバッグを行います。
  4. 標準的な比較関数では実際の値と期待値を比較できない場合に限り、カスタム・エバリュエーターを作成します。