一般的な誤りと落とし穴
VBScriptVisual Basic スクリプト言語は Microsoft® が開発した高レベル プログラミング言語です。 では、2 種類の変数があります。
変数タイプ | 説明 |
---|---|
シンプル | 変数は、整数、ブール値、文字列などの真のタイプです。 |
オブジェクト | 機能がオートメーション オブジェクト インターフェースによって晒される複雑な項目です。 |
オートメーション オブジェクト タイプを値に割り当てる前に、オブジェクトとして宣言することが重要です。
重要
値をすべての宣言済みの変数やオブジェクトに割り当てることを推奨します。
例
Function Main
' オブジェクトを使用することを宣言
Dim nameStr As String
' 値を変数に割り当て
nameStr = "This is a test assignment of text"
' 割り当てのスキャナー アクティビティ ウィンドウに結果を表示
echo nameStr
' 結果を戻す
Main = true
End Function
詳細例については、次のスクリプトがどのサービスをターゲット マシン (localhost = 127.0.0.1) にインストールするのかをリストします。 次のテキストをスクリプト デバッガーにコピーして貼り付けて実行 (F5) します。 デバッグ ウィンドウでは、ローカル マシンのインストール済みサービスのリストが確認できます。
Function Main
' 使用する必要のあるオブジェクトの宣言
Dim wmi As Object
Dim objswbemobject As Object
' 必要な他の変数の宣言
Dim strComputer As String
Dim cr As String
strComputer = "127.0.0.1"
' 改行
cr = Chr(13) + Chr(10)
' wmi オブジェクトでフック
Set wmi = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
' フックが成功したことをチェック
If wmi is Nothing Then echo ("error1")
' wmi のサービス インスタンスを戻す
Set wmiinst=wmi.instancesof("Win32_Service")
' インスタンスが利用可能かどうかをチェック
If wmiinst is Nothing Then echo ("error2")
' 各インスタンスをループ
For Each objswbemobject In wmiinst
echo("Service Name= ")
' サービスを表示
echo(objswbemobject.DisplayName+cr)
Next
End Function
注意
宣言せずにオートメーション オブジェクトを使用しようとすると、スクリプトはコンパイル中にエラーになります。 その例として、オブジェクト変数 wmi の、同じコードの一部ではあるものの完全な宣言が不足しているものを次に示します。 スクリプトを実行しようとした瞬間に、エラーが発生した行を明示するエラー メッセージが表示されます。
Function Main
Dim wmi 'WARNING : missing “as object”
Dim objswbemobject As Object
…
…
…
End Function