Construcción de una cadena de moniker

El formato de cadena de moniker es similar al de la ruta de acceso estándar a un objeto WMI. Parar más información, consulte Requisitos de ruta de acceso de objetos WMI.

Un moniker tiene las siguientes partes:

  • Prefijo WinMgmts: (obligatorio). El prefijo indica a Windows Script Host (WSH) que el código siguiente usará los objetos de API de scripting.
  • Un componente de configuración de seguridad (opcional)
  • Un componente de ruta de acceso de objetos WMI (opcional)

No se puede especificar una contraseña en una cadena de moniker de WMI. Si debe cambiar la contraseña (parámetro strPassword) o el tipo de autenticación (parámetro strAuthority) al conectarse a WMI, llame a SWbemLocator.ConnectServer. Tenga en cuenta que solo puede especificar la contraseña y la autoridad en conexiones a equipos remotos. Si se intenta establecerlos en un script que se ejecuta en el equipo local, se producirá un error. Para más información sobre cuándo se usan los componentes de configuración de seguridad y ruta de acceso de objetos, consulte Configuración de seguridad de WMI.

El siguiente nombre especifica el objeto SWbemServices que representa el espacio de nombres root\default, con la suplantación activada y el privilegio wbemPrivilegeDebug (SeDebugPrivilege) habilitado, y el privilegio wbemPrivilegeSecurity (SeSecurityPrivilege) deshabilitado.

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

Nota

Los literales de cadena no distinguen mayúsculas de minúsculas.

El prefijo "!" en un privilegio indica que se va a deshabilitar el privilegio; la omisión de este prefijo implica que se va a habilitar el privilegio.

El prefijo "!" se usa en el nombre del equipo o el espacio de nombres cuando se especifica la configuración de seguridad entre corchetes antes del nombre del equipo o el espacio de nombres.

 

Al especificar la ruta de acceso del objeto, se permiten las siguientes asignaciones predeterminadas:

  • El nombre de la máquina se puede omitir en la ruta de acceso del objeto, en cuyo caso se asume el nombre de la máquina local.

  • El espacio de nombres se puede omitir en la ruta de acceso del objeto, en cuyo caso se asume el espacio de nombres predeterminado.

    Esto viene determinado por el valor de la clave del Registro HKEY_LOCAL_MACHINE\Software\Microsoft\WBEM\Scripting\Default Namespace; el valor predeterminado es "Root\CIMv2".

  • También se puede especificar una clase o una instancia, en cuyo caso el objeto devuelto es un objeto WMI en lugar de un objeto de servicios.

Nota

Si se especifica una clase o una instancia, no puede omitir el espacio de nombres al especificar el nombre de la máquina.

 

Para obtener una referencia de las constantes de privilegio usadas en la cadena de moniker de WMI, consulte Constantes de privilegios y los descriptores "Nombre corto de scripting".

Cadenas de moniker válidas

En los ejemplos siguientes se muestran cadenas de moniker válidas.

El siguiente moniker identifica el espacio de nombres predeterminado del equipo local. Se devuelve un objeto SWbemServices.

WinMgmts:

El siguiente moniker identifica el espacio de nombres predeterminado del equipo myServer. Se devuelve un objeto SWbemServices.

"WinMgmts://myServer"

El siguiente moniker identifica el espacio de nombres root\cimv2 del equipo myServer. Se devuelve un objeto SWbemServices.

"WinMgmts://myServer/root/cimv2"

El siguiente moniker identifica el espacio de nombres root\cimv2 del servidor local. Se devuelve un objeto SWbemServices.

"WinMgmts:root/cimv2"

El siguiente moniker identifica la clase Win32_LogicalDisk en el espacio de nombres root\cimv2 del servidor myServer. Se devuelve un objeto SWbemObject.

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

El siguiente moniker identifica la clase Win32_LogicalDisk en el espacio de nombres root\cimv2 del servidor local. Se devuelve un objeto SWbemObject.

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

El siguiente moniker identifica la clase Win32_LogicalDisk en el espacio de nombres predeterminado del servidor local. Se devuelve un objeto SWbemObject.

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

El siguiente moniker identifica la instancia de Win32_LogicalDisk correspondiente a la unidad C: en el espacio de nombres de scripting predeterminado del servidor local. Se devuelve un objeto SWbemObject. El espacio de nombres predeterminado del scripting viene determinado por la configuración predeterminada del espacio de nombres, tal y como se especifica en el control de WMI. Para más información, consulte Establecer la seguridad del espacio de nombres con el control WMI.

"WinMgmts::Win32_LogicalDisk='C:'"

El siguiente moniker identifica la instancia de Win32_LogicalDisk correspondiente a la unidad C: en el espacio de nombres root\cimv2 del servidor myServer. Se devuelve un objeto SWbemObject.

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

El siguiente moniker identifica la instancia de Win32_LogicalDisk correspondiente a la unidad C: en el espacio de nombres root\cimv2 del servidor local. Se devuelve un objeto SWbemObject.

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

El siguiente moniker identifica la instancia de Win32_LogicalDisk correspondiente a la unidad C: en el espacio de nombres predeterminado del servidor local. Se devuelve un objeto SWbemObject.

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

El siguiente moniker establece el nivel de suplantación para suplantar y establece el privilegio SE_DEBUG.

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

El siguiente moniker establece el nivel de suplantación para suplantar y establece el privilegio SE_DEBUG. También revoca el privilegio SE_SHUTDOWN.

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

El moniker siguiente recupera descripciones localizadas en inglés americano para la clase myclass del espacio de nombres root\wmi.

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

El siguiente moniker solicita la autenticación Kerberos mediante la entidad de seguridad mydomain\server.

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

El siguiente moniker solicita la autenticación NTLM mediante el dominio mydomain.

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

En el siguiente ejemplo de código de VBScript se muestra cómo combinar parámetros de seguridad y configuración regional en 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

Nota

Aunque los monikers proporcionan un acceso más directo a los objetos, en determinadas circunstancias, el uso repetido de monikers puede ser menos eficaz que el código equivalente que conecta explícitamente a WMI. Si el rendimiento de la aplicación es un aspecto que hay que tener en cuenta, podría usar mecanismos alternativos.

No es posible usar la función GetObject proporcionada por VBScript para actualizar o establecer datos al ejecutar scripts insertados en una página HTML, ya que, por motivos de seguridad, Microsoft Internet Explorer deniega el uso de esta llamada.