Construction d’une chaîne Moniker

Le format de chaîne moniker est similaire à celui d’un chemin d’objet WMI standard. Pour plus d’informations, consultez WMI Object Path Requirements.

Un moniker comporte les éléments suivants :

  • Préfixe WinMgmts : (obligatoire). Le préfixe indique à l’hôte de script Windows (WSH) que le code suivant utilisera les objets api de script.
  • Un composant de paramètres de sécurité (facultatif)
  • Un composant de chemin d’accès à l’objet WMI (facultatif)

Vous ne pouvez pas spécifier de mot de passe dans une chaîne de moniker WMI. Si vous devez modifier le mot de passe (paramètre strPassword ) ou le type d’authentification (paramètre strAuthority ) lors de la connexion à WMI, appelez SWbemLocator.ConnectServer. N’oubliez pas que vous pouvez uniquement spécifier le mot de passe et l’autorité dans les connexions aux ordinateurs distants. Toute tentative de définition de ces paramètres dans un script en cours d’exécution sur l’ordinateur local génère une erreur. Pour plus d’informations sur l’utilisation des paramètres de sécurité et des composants de chemin d’accès d’objet, consultez Paramètres de sécurité WMI.

Le moniker suivant spécifie l’objet SWbemServices qui représente l’espace de noms root\default, avec l’emprunt d’identité sur et le privilège wbemPrivilegeDebug (SeDebugPrivilege) activé, et le privilège wbemPrivilegeSecurity (SeSecurityPrivilege) désactivé.

"winmgmts:{impersonationLevel=impersonate," & "(debug,!security)}!root\default"

Notes

Aucune des comparaisons de chaînes n’est sensible à la casse.

Le préfixe « ! » sur un privilège indique que le privilège doit être désactivé ; l’omission de ce préfixe implique que le privilège doit être activé.

Le préfixe « ! » est utilisé sur le nom ou l’espace de noms de l’ordinateur lorsque les paramètres de sécurité sont spécifiés entre crochets avant le nom ou l’espace de noms de l’ordinateur.

 

Les affectations par défaut suivantes sont autorisées lors de la spécification du chemin d’accès de l’objet :

  • Le nom de l’ordinateur peut être omis dans le chemin d’accès de l’objet, auquel cas le nom de l’ordinateur local est supposé.

  • L’espace de noms peut être omis du chemin d’accès de l’objet, auquel cas l’espace de noms par défaut est supposé.

    Cela est déterminé par la valeur de la clé de Registre HKEY_LOCAL_MACHINE\Software\Microsoft\WBEM\Scripting\Default Namespace, la valeur par défaut est « Root\CIMv2 ».

  • Une classe ou instance peut également être spécifiée, auquel cas l’objet retourné est un objet WMI plutôt qu’un objet services.

Notes

Si une classe ou un instance est spécifié, vous ne pouvez pas omettre l’espace de noms lors de la spécification du nom de l’ordinateur.

 

Pour obtenir une référence sur les constantes de privilège utilisées sur la chaîne de moniker WMI, consultez Constantes de privilège et les descripteurs « Scripting short name ».

Chaînes Moniker valides

Les exemples suivants montrent des chaînes moniker valides.

Le moniker suivant identifie l’espace de noms par défaut sur l’ordinateur local. Un objet SWbemServices est retourné.

WinMgmts:

Le moniker suivant identifie l’espace de noms par défaut sur l’ordinateur myServer. Un objet SWbemServices est retourné.

"WinMgmts://myServer"

Le moniker suivant identifie l’espace de noms root\cimv2 sur l’ordinateur myServer. Un objet SWbemServices est retourné.

"WinMgmts://myServer/root/cimv2"

Le moniker suivant identifie l’espace de noms root\cimv2 sur le serveur local. Un objet SWbemServices est retourné.

"WinMgmts:root/cimv2"

Le moniker suivant identifie la classe Win32_LogicalDisk dans l’espace de noms root\cimv2 sur le serveur myServer. Un objet SWbemObject est retourné.

"WinMgmts:{impersonationLevel=impersonate}" _
    & "!//myServer/root/cimv2:Win32_LogicalDisk"

Le moniker suivant identifie la classe Win32_LogicalDisk dans l’espace de noms root\cimv2 sur le serveur local. Un objet SWbemObject est retourné.

"WinMgmts:{impersonationLevel=impersonate}" & "!root/cimv2:Win32_LogicalDisk"

Le moniker suivant identifie la classe Win32_LogicalDisk dans l'espace de noms par défaut du serveur local. Un objet SWbemObject est retourné.

"WinMgmts:{impersonationLevel=impersonate}" & "!Win32_LogicalDisk"

Le moniker suivant identifie le instance de Win32_LogicalDisk correspondant au lecteur C: dans l’espace de noms de script par défaut sur le serveur local. Un objet SWbemObject est retourné. L’espace de noms par défaut pour le script est déterminé par le paramètre de configuration de l’espace de noms par défaut spécifié dans le contrôle WMI. Pour plus d’informations, consultez Définition de la sécurité des espaces de noms avec le contrôle WMI.

"WinMgmts::Win32_LogicalDisk='C:'"

Le moniker suivant identifie le instance de Win32_LogicalDisk correspondant au lecteur C: dans l’espace de noms root\cimv2 sur le serveur myServer. Un objet SWbemObject est retourné.

"WinMgmts:{impersonationLevel=impersonate}" & "!//myServer/root/cimv2:Win32_LogicalDisk="C:""

Le moniker suivant identifie la l’instanceWin32_LogicalDisk dans l’espace de noms correspondant au root\cimv2 sur le serveur local. Un objet SWbemObject est retourné.

"WinMgmts:{impersonationLevel=impersonate}" & "!root/cimv2:Win32_LogicalDisk="C:""

Le moniker suivant identifie le instance de Win32_LogicalDisk correspondant au lecteur C: dans l’espace de noms par défaut sur le serveur local. Un objet SWbemObject est retourné.

"WinMgmts:{impersonationLevel=impersonate}" & "!Win32_LogicalDisk="C:""

Le moniker suivant définit le niveau d’emprunt d’identité sur l’emprunt d’identité et définit le privilège SE_DEBUG.

"WinMgmts:{impersonationLevel=impersonate, (Debug)}"

Le moniker suivant définit le niveau d’emprunt d’identité sur l’emprunt d’identité et définit le privilège SE_DEBUG. Il révoque également le privilège SE_SHUTDOWN.

"WinMgmts:{impersonate,(Debug,!Shutdown)}"

Le moniker suivant récupère les descriptions localisées en anglais américain pour la classe myclass à partir de l’espace de noms root\wmi.

"WinMgmts:[locale=ms_409]!root/wmi:myclass"

Le moniker suivant demande l’authentification Kerberos à l’aide du principal mydomain\server.

"Winmgmts:{impersonationLevel=delegate," _
    & "authority=kerberos:mydomain\server}" _
    & "!//myserver/root/default:__cimomidentification=@"

Le moniker suivant demande l’authentification NTLM à l’aide du domaine mydomain.

"Winmgmts:{impersonationLevel=impersonate," & _
    "authority=ntlmdomain:mydomain} " & _
    "!//myserver/root/default:__cimomidentification=@

L’exemple de code VBScript suivant montre comment combiner des paramètres de sécurité et de paramètres régionaux dans un moniker.

'*****************************************************************
'   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

Notes

Bien que les monikers fournissent un accès plus direct aux objets, dans certaines circonstances, l’utilisation répétée de monikers peut être moins efficace que le code équivalent qui se connecte explicitement à WMI. Si les performances de l’application sont un facteur à prendre en compte, envisagez d’utiliser les autres mécanismes.

Il n’est pas possible d’utiliser la fonction GetObject fournie par VBScript pour mettre à jour ou définir des données lors de l’exécution de scripts incorporés dans une page HTML, car Microsoft Internet Explorer refuse l’utilisation de cet appel pour des raisons de sécurité.