モニカー文字列の作成
モニカー文字列形式は、標準的な WMI オブジェクト パスの形式と似ています。 詳細については、「WMI オブジェクト パスの要件」を参照してください。
モニカーには以下の部分があります。
- プレフィックス WinMgmts: (必須)。 このプレフィックスでは、後続のコードで Scripting API オブジェクトを使用することを Windows スクリプト ホスト (WSH) に指示します。
- セキュリティ設定コンポーネント (省略可能)
- WMI オブジェクト パス コンポーネント (省略可能)
WMI モニカー文字列でパスワードを指定することはできません。 WMI に接続するときにパスワード (strPassword パラメーター) または認証の種類 (strAuthority パラメーター) を変更する必要がある場合は、SWbemLocator.ConnectServer を呼び出します。 パスワードと権限は、リモート コンピューターへの接続でのみ指定できることに注意してください。 ローカル コンピューターで実行しようとしているスクリプトでこれらの設定を試みると、エラーが発生します。 セキュリティ設定とオブジェクト パス コンポーネントを使用する場合の詳細については、「WMI セキュリティ設定」を参照してください。
次のモニカーでは、偽装が有効で、wbemPrivilegeDebug (SeDebugPrivilege) 特権が有効で、wbemPrivilegeSecurity (SeSecurityPrivilege) 特権が無効になっている名前空間 root\default を表す SWbemServices オブジェクトを指定しています。
"winmgmts:{impersonationLevel=impersonate," & "(debug,!security)}!root\default"
注意
すべての文字列リテラルで、大文字と小文字が区別されます。
特権に対する "!" プレフィックスは、その特権を無効にすることを示します。このプレフィックスを省略すると、その特権を有効にすることを意味します。
コンピューター名または名前空間の前の角かっこ内でセキュリティ設定が指定される場合は、そのコンピューター名または名前空間に対して "!" プレフィックスが使用されます。
オブジェクト パスの指定時には、以下の既定の割り当てが可能です。
コンピューターのマシン名は、オブジェクト パスから省略できます。この場合、ローカル コンピューター名が指定されたと想定されます。
名前空間は、オブジェクト パスから省略できます。この場合、既定の名前空間が指定されたと想定されます。
これは、レジストリ キー HKEY_LOCAL_MACHINE\Software\Microsoft\WBEM\Scripting\Default Namespace の値によって決まります。既定値は "Root\CIMv2" です。
クラスまたはインスタンスを指定することもできます。その場合、返されるオブジェクトは、サービス オブジェクトではなく WMI オブジェクトです。
Note
クラスまたはインスタンスを指定した場合、コンピューターのマシン名を指定するときに名前空間を省略できません。
WMI モニカー文字列で使用される特権定数の参照情報については、「特権定数」と、"スクリプトの短い名前" の記述子を参照してください。
有効なモニカー文字列
以下の例で、有効なテンプレート文字列を示します。
次のモニカーでは、ローカル コンピューター上の既定の名前空間を識別します。 SWbemServices オブジェクトが返されます。
WinMgmts:
次のモニカーでは、コンピューター myServer 上の既定の名前空間を識別します。 SWbemServices オブジェクトが返されます。
"WinMgmts://myServer"
次のモニカーでは、myServer コンピューター上の root\cimv2 名前空間を識別します。 SWbemServices オブジェクトが返されます。
"WinMgmts://myServer/root/cimv2"
次のモニカーでは、ローカル サーバー上の root\cimv2 名前空間を識別します。 SWbemServices オブジェクトが返されます。
"WinMgmts:root/cimv2"
次のモニカーでは、myServer サーバー上の root\cimv2 名前空間の Win32_LogicalDisk クラスを識別します。 SWbemObject オブジェクトが返されます。
"WinMgmts:{impersonationLevel=impersonate}" _
& "!//myServer/root/cimv2:Win32_LogicalDisk"
次のモニカーでは、ローカル サーバー上の root\cimv2 名前空間の Win32_LogicalDisk クラスを識別します。 SWbemObject オブジェクトが返されます。
"WinMgmts:{impersonationLevel=impersonate}" & "!root/cimv2:Win32_LogicalDisk"
次のモニカーでは、ローカル サーバー上の既定の名前空間の Win32_LogicalDisk クラスを識別します。 SWbemObject オブジェクトが返されます。
"WinMgmts:{impersonationLevel=impersonate}" & "!Win32_LogicalDisk"
次のモニカーでは、ローカル サーバー上の既定のスクリプト名前空間のドライブ C: に対応する、Win32_LogicalDisk のインスタンスを識別します。 SWbemObject オブジェクトが返されます。 スクリプトの既定の名前空間は、WMI コントロールで指定されている既定の名前空間の構成設定によって決まります。 詳細については、「WMI コントロールを使用した名前空間のセキュリティの設定」を参照してください。
"WinMgmts::Win32_LogicalDisk='C:'"
次のモニカーでは、myServer サーバー上の root\cimv2 名前空間のドライブ C: に対応する、Win32_LogicalDisk のインスタンスを識別します。 SWbemObject オブジェクトが返されます。
"WinMgmts:{impersonationLevel=impersonate}" & "!//myServer/root/cimv2:Win32_LogicalDisk="C:""
次のモニカーでは、ローカル サーバー上の root\cimv2 名前空間のドライブ C: に対応する、Win32_LogicalDisk のインスタンスを識別します。 SWbemObject オブジェクトが返されます。
"WinMgmts:{impersonationLevel=impersonate}" & "!root/cimv2:Win32_LogicalDisk="C:""
次のモニカーでは、ローカル サーバー上の既定の名前空間のドライブ C: に対応する、Win32_LogicalDisk のインスタンスを識別します。 SWbemObject オブジェクトが返されます。
"WinMgmts:{impersonationLevel=impersonate}" & "!Win32_LogicalDisk="C:""
次のモニカーでは、偽装して SE_DEBUG 特権を設定するように、偽装レベルを設定します。
"WinMgmts:{impersonationLevel=impersonate, (Debug)}"
次のモニカーでは、偽装して SE_DEBUG 特権を設定するように、偽装レベルを設定します。 また、SE_SHUTDOWN 特権を取り消します。
"WinMgmts:{impersonate,(Debug,!Shutdown)}"
次のモニカーでは、アメリカ英語にローカライズされた myclass クラスの説明を、root\wmi 名前空間から取得します。
"WinMgmts:[locale=ms_409]!root/wmi:myclass"
次のモニカーでは、プリンシパル mydomain\server を使用して Kerberos 認証を要求します。
"Winmgmts:{impersonationLevel=delegate," _
& "authority=kerberos:mydomain\server}" _
& "!//myserver/root/default:__cimomidentification=@"
次のモニカーでは、mydomain ドメインを使用して NTLM 認証を要求します。
"Winmgmts:{impersonationLevel=impersonate," & _
"authority=ntlmdomain:mydomain} " & _
"!//myserver/root/default:__cimomidentification=@
次の VBScript コード例は、モニカーでセキュリティとロケールのパラメーターを組み合わせる方法を示しています。
'*****************************************************************
' Name : Moniker.vbs
'
' Purpose : This example shows how to set various
' parameters in a moniker.
'****************************************************************
Set myobj = GetObject("WINMGMTS:" _
& "{impersonationLevel=impersonate," _
& "authenticationLevel=pktPrivacy," _
& "authority=ntlmdomain:mydomain," _
& "(Debug,!Shutdown)}" _
& "[locale=ms_409]" _
& "!\\User1\ROOT\CIMV2:Win32_LogicalDisk=""C:""")
wscript.echo "File system = " & myobj.filesystem
注意
モニカーではオブジェクトへのより直接的なアクセスが提供されますが、特定の状況では、モニカーを繰り返し使用する効率が、WMI に明示的に接続する同等のコードよりも低くなる可能性があります。 アプリケーションのパフォーマンスが考慮すべき問題である場合は、代わりのメカニズムを使用することを検討してください。
Microsoft Internet Explorer では、セキュリティ上の理由でこの呼び出しの使用が拒否されるため、HTML ページに埋め込まれたスクリプトを実行するときに、VBScript によって提供される GetObject 関数を使用してデータを更新または設定することはできません。