WMI サービスを使ってスクリプトが使用しているメモリ量を取得できる。
サンプルスクリプト
'検索するプロセス名 Dim processNameToSearch processNameToSearch = "cscript.exe" 'WMIサービスを取得 Dim wmi Set wmi = GetObject("winmgmts:\\.\Root\CIMV2") 'プロセス名で Win32_Process を検索 Dim result Set result = wmi.ExecQuery("SELECT * FROM Win32_Process WHERE Name = '" & processNameToSearch & "'") '検索結果を出力 Dim tmp For Each tmp in result 'プロセスID WScript.Echo "Process ID: " & tmp.ProcessId 'プロセスが使用している物理メモリ量(バイト) WScript.Echo "Memory Usage: " & tmp.WorkingSetSize & " bytes" 'コマンドライン WScript.Echo "CommandLine: " & tmp.CommandLine Next
サンプルスクリプトの説明
まず GetObject 関数を使って WMI サービスへの参照を取得する。
Dim wmi Set wmi = GetObject("winmgmts:\\.\Root\CIMV2")
関数の引数は WMI サービスへの接続文字列。
接続文字列は winmgmts:\\〈コンピューター名〉\〈WMI 名前空間〉 の形式で指定する。
winmgmts:\\: WMI サービスへの接続を表す文字列(固定)
〈コンピューター名〉: 接続先のコンピューター名
ローカルを指定するときは . にする。
今回はローカルコンピューターの WMI サービスに接続し、その参照を取得している。
続けて ExecQuery() で Win32_Process オブジェクトを取得する。
プロセス名が検索条件。
Dim result Set result = wmi.ExecQuery("SELECT * FROM Win32_Process WHERE Name = '" & processNameToSearch & "'")
ExecQuery の引数には WQL と呼ばれる WMI 用の SQL を指定する。
最後に、検索結果を表示する。
- ProcessId: プロセスID
- WorkingSetSize: 使用メモリ量(バイト単位)
- CommandLine: コマンドライン
Dim tmp For Each tmp in result 'プロセスID WScript.Echo "Process ID: " & tmp.ProcessId 'プロセスが使用している物理メモリ量(バイト) WScript.Echo "Memory Usage: " & tmp.WorkingSetSize & " bytes" 'コマンドライン WScript.Echo "CommandLine: " & tmp.CommandLine Next
Win32_Process オブジェクトから取得できる項目はヘルプを参照のこと。
↓
Win32_Process クラス - Win32 apps | Microsoft Learn