Construindo uma cadeia de caracteres de moniker

O formato de cadeia de caracteres do moniker é semelhante ao de um caminho de objeto WMI padrão. Para obter mais informações, consulte Requisitos de caminho do objeto WMI.

Um moniker tem as seguintes partes:

  • O prefixo WinMgmts: (obrigatório). O prefixo instrui o WSH (Host de Script do Windows) de que o código a seguir usará os objetos da API de script.
  • Um componente de configurações de segurança (opcional)
  • Um componente de caminho do objeto WMI (opcional)

Você não pode especificar uma senha em uma cadeia de caracteres de moniker WMI. Se você precisar alterar a senha (o parâmetro strPassword) ou o tipo de autenticação (o parâmetro strAuthority) ao se conectar ao WMI, chame SWbemLocator.ConnectServer. É importante lembrar que você só pode especificar a senha e a autoridade ao se conectar a computadores remotos. Tentar defini-los em um script em execução no computador local resultará em um erro. Para obter mais informações sobre quando as configurações de segurança e os componentes do caminho do objeto são usados, consulte Configurações de segurança do WMI.

O moniker a seguir especifica o objeto SWbemServices que representa o namespace root\default com representação ativada, com o privilégio wbemPrivilegeDebug (SeDebugPrivilege) habilitado e o privilégio wbemPrivilegeSecurity (SeSecurityPrivilege) desabilitado.

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

Observação

Todas os literais de cadeia de caracteres diferenciam maiúsculas de minúsculas.

O prefixo "!" em um privilégio indica que ele deve ser desabilitado. A omissão desse prefixo implica que o privilégio deve ser habilitado.

O prefixo "!" é usado no nome do computador ou no namespace quando as configurações de segurança estiverem especificadas entre colchetes antes do nome ou do namespace do computador.

 

Ao especificar o caminho do objeto, as seguintes atribuições padrão são permitidas:

  • O nome do computador pode ser omitido do caminho do objeto e, nesse caso, o nome do computador local será presumido.

  • O namespace pode ser omitido do caminho do objeto e, nesse caso, o namespace padrão será presumido.

    Isso é determinado pelo valor da chave do Registro HKEY_LOCAL_MACHINE\Software\Microsoft\WBEM\Scripting\Default Namespace, o valor padrão é "Root\CIMv2".

  • Uma classe ou instância também pode ser especificada. Nesse caso, o objeto retornado é um objeto WMI em vez de um objeto de serviços.

Observação

Se for especificada uma classe ou uma instância, você não poderá omitir o namespace ao especificar o nome do computador.

 

Para obter uma referência das “Constantes de privilégio” usadas na cadeia de caracteres de moniker WMI, consulte Constantes de privilégio e os descritores "Nome curto de script".

Cadeias de caracteres de moniker válidas

Os exemplos a seguir mostram cadeias de caracteres de moniker válidas.

O moniker a seguir identifica o namespace padrão no computador local. Um objeto SWbemServices é retornado.

WinMgmts:

O moniker a seguir identifica o namespace padrão no computador myServer. Um objeto SWbemServices é retornado.

"WinMgmts://myServer"

O moniker a seguir identifica o namespace root\cimv2 no computador myServer. Um objeto SWbemServices é retornado.

"WinMgmts://myServer/root/cimv2"

O moniker a seguir identifica o namespace root\cimv2 no servidor local. Um objeto SWbemServices é retornado.

"WinMgmts:root/cimv2"

O moniker a seguir identifica a classe Win32_LogicalDisk no namespace root\cimv2 no servidor myServer. Um objeto SWbemObject é retornado.

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

O moniker a seguir identifica a classe Win32_LogicalDisk no namespace root\cimv2 no servidor local. Um objeto SWbemObject é retornado.

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

O moniker a seguir identifica a classe Win32_LogicalDisk no namespace padrão no servidor local. Um objeto SWbemObject é retornado.

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

O moniker a seguir identifica a instância de Win32_LogicalDisk correspondente à unidade C: no namespace de script padrão no servidor local. Um objeto SWbemObject é retornado. O namespace padrão para scripts é determinado pela configuração padrão de namespace, conforme especificado no Controle WMI. Para obter mais informações, consulte Configurar a segurança do namespace com o Controle WMI.

"WinMgmts::Win32_LogicalDisk='C:'"

O moniker a seguir identifica a instância de Win32_LogicalDisk correspondente à unidade C: no namespace root\cimv2 no servidor myServer. Um objeto SWbemObject é retornado.

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

O moniker a seguir identifica a instância de Win32_LogicalDisk correspondente à unidade C: no namespace root\cimv2 no servidor local. Um objeto SWbemObject é retornado.

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

O moniker a seguir identifica a instância de Win32_LogicalDisk correspondente à unidade C: no namespace padrão no servidor local. Um objeto SWbemObject é retornado.

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

O moniker a seguir define o nível de representação para representar e define o privilégio SE_DEBUG.

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

O moniker a seguir define o nível de representação para representar e define o privilégio SE_DEBUG. Ele também revoga o privilégio SE_SHUTDOWN.

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

O moniker a seguir recupera descrições localizadas em inglês americano para a classe myclass do namespace root\wmi.

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

O moniker a seguir solicita a autenticação Kerberos usando a entidade de segurança mydomain\server.

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

O moniker a seguir solicita a autenticação NTLM usando o domínio mydomain.

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

O exemplo de código VBScript a seguir mostra como combinar parâmetros de segurança e localidade em um 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

Observação

Embora os monikers forneçam acesso mais direto aos objetos, em determinadas circunstâncias, o uso repetido de monikers pode ser menos eficiente do que o código equivalente que se conecta explicitamente ao WMI. Se o desempenho do aplicativo for uma consideração importante, é recomendado usar os mecanismos alternativos.

Não é possível usar a função GetObject fornecida pelo VBScript para atualizar ou definir dados ao executar scripts inseridos em uma página HTML, pois o Microsoft Internet Explorer nega o uso dessa chamada por motivos de segurança.