Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Os scripts WMI podem condensar muitas das etapas necessárias em um programa C++. Eles podem se conectar ao WMI, não apenas através de um objeto SWbemLocator, mas também através do apelido "winmgmts:". Um moniker é um nome curto que localiza um namespace, classe ou instância no WMI. O nome "winmgmts:" é o moniker WMI que informa ao Windows Script Host para usar os objetos WMI, se conecta ao namespace padrão e obtém um objeto SWbemServices. Outras informações de conexão, como um nível de representação ou uma classe ou instância específica, aparecem na cadeia de caracteres após o nome do apelido. Você pode usar monikers em chamadas que criam ou obtêm objetos WMI. Para obter mais informações, consulte Construindo uma sequência de caracteres de identificador.
O procedimento seguinte descreve como conectar-se ao WMI usando SWbemLocator.
Para conectar-se ao WMI usando SWbemLocator
Recupere um objeto localizador com uma chamada para CreateObject.
Set Locator = CreateObject("WbemScripting.SWbemLocator")Inicie sessão no namespace usando uma chamada para o método ConnectServer.
Set objLocator = CreateObject("WbemScripting.SWbemLocator") Set objService = objLocator.ConnectServer(".", "root\cimv2")Se você não especificar um computador na chamada para ConnectServer, o WMI se conectará ao computador local. Se você não especificar um namespace, o WMI se conectará ao namespace especificado na chave do Registro.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WBEM\Scripting\Namespace Padrão
O namespace padrão é \root\cimv2. Para obter mais informações sobre namespaces, consulte Criando hierarquias no WMI.
Defina o nível de representação com uma chamada para o método SWbemServices.Security_.
objService.Security_.ImpersonationLevel = 3Para obter mais informações, consulte Definindo o nível de segurança padrão do processo usando o VBScript.
Implemente o propósito do seu script.
O WMI expõe uma variedade de objetos de script que são usados para acessar e manipular dados em sua rede. Para obter mais informações, consulte Manipulating Class and Instance Information e Scripting API for WMI.
Set objLocator = CreateObject("WbemScripting.SWbemLocator") Set objService = objLocator.ConnectServer(".", "root\cimv2") objService.Security_.ImpersonationLevel = 3 Set Jobs = objService.ExecQuery("SELECT * FROM Win32_ScheduledJob") i=0 For each Job in Jobs i = i+1 WScript.Echo Job.JobId & " " & Job.Command & VBNewLine Next If i = 0 Then WScript.Echo "No Jobs Scheduled with the AT command were found" End If
O procedimento a seguir descreve como se conectar ao WMI e recuperar um objeto usando um moniker.
Para conectar-se ao WMI e recuperar um objeto usando um moniker
Chame GetObject com um moniker no parâmetro de entrada.
'the simple version Set MyObject = GetObject("winMgmts::Win32_scheduledJob") 'Or the more complex version strComputer = "." Set MyObject = GetObject("winMgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\Root\CIMv2:Win32_ScheduledJob")O moiniker contém vários elementos que você pode usar para se conectar ao WMI:
O "winmgmts:" diz ao WSH para usar objetos da API de script. Neste exemplo específico, o WSH saberá que deve retornar um SWbemObject que descreve o primeiro Win32_scheduledJob no sistema. Outros objetos possíveis de retornar seriam um SWbemCollection ou um objeto SWbemServices, dependendo do que o moniker descreve.
Opcionalmente, você pode definir os níveis de segurança para a conexão. No entanto, observe que você não pode definir informações de nome e senha em um moniker. Para obter mais informações, consulte Protegendo clientes de script.
Opcionalmente, você pode definir o caminho para o objeto WMI. Isso inclui o computador local ou remoto, o namespace, bem como o nome da classe. Para obter mais informações sobre como usar o VBScript GetObject em scripts WMI, consulte Criando uma instância e Recuperando uma instância WMI.
Em vez de recuperar um único item ou coleção, você também pode optar por recuperar o objeto SWbemServices (conforme descrito no exemplo anterior). Depois, você pode chamar consultas adicionais no objeto retornado.
strComputer = "." Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colScheduledJobs = objWMIService.ExecQuery("Select * from Win32_ScheduledJob") For Each objJob in colScheduledJobs Wscript.Echo "Job ID: " & objJob.JobId & "Command: " & objJob.Command & VBNewLine NextNo exemplo anterior, "impersonate" ou "impersonationLevel=3" é o nível de segurança padrão do processo. No exemplo a seguir, não é necessário especificar esse nível de segurança do processo, a menos que você precise alterar a segurança do processo para delegar. Para obter mais informações, consulte Definindo o nível de segurança padrão do processo usando o VBScript.
Tópicos relacionados