スクリプトでのパフォーマンス データへのアクセス
WMI スクリプトは、ローカル コンピューターまたはリモートで、プレインストールされている WMI パフォーマンス カウンター クラスにアクセスできます。 スクリプトは、Win32_PerfRawData_PerfOS_Memory などの計算されていないクラス、または書式設定されたクラス、Win32_PerfFormattedData_PerfOS_Memory からデータを取得できますが、書式設定されたデータ クラスを使用する方が簡単です。
パフォーマンス カウンター クラスを使用してパフォーマンス データを監視するには、"リフレッシャー" を使用する必要があります。 SWbemRefresher オブジェクトを使用して更新用に 1 つ以上のパフォーマンス オブジェクトを格納するか、SWbemObjectEx.Refresh 呼び出しによって 1 つのオブジェクトを更新します。 詳細については、「スクリプトでの WMI データの更新」を参照してください。
SWbemRefresher.AutoReconnect プロパティを TRUE に設定すると、接続が切断された場合に WMI が自動的にリモート プロバイダーに再接続するため、接続状態をチェックする必要はありません。
次のスクリプト コード例のスクリプトに示すように、更新するオブジェクトの開始値を取得するために、最初の更新呼び出しを行う必要があります。 その後の更新呼び出しにはデータが含まれます。
注意
スクリプトがリモート コンピューターから WMI パフォーマンス カウンター データにアクセスしている場合、スクリプトは現在ログオンしているユーザー アカウントでのみ実行できます。 WMI では、さまざまなユーザー資格情報を渡す SWbemLocator.ConnectServer 呼び出しはサポートされていません。 そのため、リモート コンピューターを呼び出すアカウントは、そのコンピューターに対する適切な特権をあらかじめ持っている必要があります。
次のスクリプト コード例は、SWbemRefresher オブジェクトを使用して、パフォーマンス カウンター オブジェクト内のデータを更新する方法を示しています。 WMI でのパフォーマンス カウンターの使用法の詳細については、「WMI のプレインストール済みパフォーマンス クラスへのアクセス」を参照してください。
' Get raw and cooked data performance counter instances for the
" wscript process running this script
set RawProc = GetObject("winmgmts:Win32_PerfRawdata_Perfproc_process.name='wscript'")
set CookedProc = GetObject("winmgmts:Win32_Perfformatteddata_Perfproc_process.name='wscript'")
' Display the same property in raw and cooked form in a loop
for I = 1 to 6
Wscript.Echo "wscript process raw PageFaultsPerSec = & RawProc.PageFaultsPerSec _
& " cooked PageFaultsPerSec= " & CookedProc.PageFaultsPerSec
' Wait 2 seconds
Wscript.Sleep 2000
' Refresh the object
RawProc.Refresh_
CookedProc.Refresh_
next
例
次のスクリプト コード例は、更新するオブジェクトの開始値を取得するために、最初の更新呼び出しを行う必要があることを示しています。 その後の更新呼び出しにはデータが含まれます。
次のスクリプト コード例は、SWbemRefresher オブジェクトを使用して、パフォーマンス カウンター オブジェクト内のデータを更新する方法を示しています。 WMI でのパフォーマンス カウンターの使用法の詳細については、「WMI のプレインストール済みパフォーマンス クラスへのアクセス」を参照してください。
' Get raw and cooked data performance counter instances for the
" wscript process running this script
set RawProc = GetObject("winmgmts:" _
& "Win32_PerfRawdata_Perfproc_process." _
& "name='wscript'")
set CookedProc = GetObject("winmgmts:" _
& "Win32_Perfformatteddata_Perfproc_process." _
& "name='wscript'")
' Display the same property in raw and cooked form in a loop
for I = 1 to 6
Wscript.Echo "wscript process raw PageFaultsPerSec = " _
& RawProc.PageFaultsPerSec _
& " cooked PageFaultsPerSec= " _
& CookedProc.PageFaultsPerSec
' Wait 2 seconds
Wscript.Sleep 2000
' Refresh the object
RawProc.Refresh_
CookedProc.Refresh_
next
関連トピック