WMI (Windows Management Instrumentation ) é usado para controlar as tarefas de gerenciamento em qualquer interface do Windows . A infra-estrutura é direcionado a programadores de C /C + + , mas pode ser implementado por programadores usando qualquer linguagem de script compatível com Windows, como o VBScript. WMI é uma ferramenta poderosa para processos administrativos no servidor local, mas é particularmente útil para máquinas remotas. Para WMI para acessar um computador remoto, o computador remoto deve permitir que passe pelo firewall. Instruções 
 um 
 Definir permissões no computador remoto . Se um administrador em "Computador A" precisa acessar "Computador B ", deve ser permitido após o firewall "Computador B" . Entrar em "Computador B " e abra o prompt de comando . Clique em "Iniciar ", "Executar ", digite " cmd.exe " e pressione " Enter" 
 2 
 Digite o seguinte no prompt de comando: " . Netsh firewall set RemoteAdmin serviço permitir " e depois pressione " Enter". 
 3 
 Crie um objeto localizador WBI com o seguinte código : 
 
 Set objSWbemLocator = CreateObject (" WbemScripting.SWbemLocator " ) 
 4 
 Conecte-se ao computador remoto através do " Método SWbemLocator.ConnectServer ". Esta função irá retornar um objeto " SWbemServices " , que é usado para executar comandos através da conexão remota : 
 
 objwbemServices = SWbemLocator.ConnectServer (_ 
 
 [ ByVal strServer ] , _ 
 
 [ ByVal strNamespace ] , _ 
 
 [ ByVal strUser ] , _ 
 
 [ ByVal strPassword ] , _ 
 
 [ ByVal strLocale ] , _ 
 
 [ ByVal strAuthority ] , _ 
 
 [ ByVal iSecurityFlags ] , _ 
 
 [ ByVal objwbemNamedValueSet ] _ 
 
 ) 
 
 Onde: 
 
 strServer é o nome do computador remoto . 
 
 strNamespace pode ser deixado em branco. 
 
 strUser é o nome do usuário a ser usado para fazer o login no computador remoto. 
 
 strPassword é a senha para o usuário no computador remoto. 
 
 strLocale pode ser deixado em branco. 
 
 strAuthority também pode ser deixado em branco. 
 
 iSecurityFlags pode ser ajustado para (0x0) para fazer o script continuar a tentar se conectar até que uma conexão é estabelecida. A alternativa é ( 0x80 ) , caso em que a conexão tentará carregar por dois minutos , depois morrer 
 
 objwbemNamedValueSet pode ser deixado em branco 
 
 Para continuar o exemplo : . . 
 
 Definir objWMIService = objSWbemLocator.ConnectServer ( " Some_Computer ", _ 
 
 , _ 
 
 " algum_usuário ", _ 
 
 " alguma_senha ", _ 
 
 " ", _ 
 
 "") 
 5 
 Executar um comando com o " Win32_Process de classe. " Esta função irá executar um comando no computador remoto . Use a sintaxe do MS-DOS para executar comandos nesta função : 
 
 uint32 Criar ( 
 
 [ no] Seqüência de linha de comando , 
 
 [ no] Seqüência de CurrentDirectory , 
 
 [no] Win32_ProcessStartup ProcessStartupInformation , 
 
 [out] uint32 ProcessId 
 
 ); 
 
 Onde: 
 
 CommandLine é a linha de comando que deve ser executado na máquina remota . 
 
 CurrentDirectory deve ser definido como nulo , a menos que haja uma razão para especificar um diretório. 
 
 Win32_ProcessStartup ProcessStartupInformation deve ser o objeto de conexão . Neste caso , será o objeto SWbemLocator.ConnectServer criado na etapa anterior . 
 
 ProcessId vai se tornar uma variável global que contém a identificação do processo por este comando. Digite um nome de variável única aqui . 
 
 A função retorna "0" se o processo é bem-sucedido. Números de código de erro é retornado para os processos que falharam. Para o nosso exemplo , a função pode ser escrita: 
 
 Definir objProcess = objWMIService.Get ( " Win32_Process " ) 
 
 intReturn = objProcess.Create _ 
 
 ( " algum_comando " , Null, objWMIService , intProcessID ) 
 
 Se intReturn < > 0 Then 
 
 Wscript.Echo " O processo não pôde ser criado. " & _ 
 
 VbNewLine & " linha de comando: " & strCommand & _ 
 
 vbNewLine & " Valor de retorno: " & intReturn 
 
 Else 
 
 Wscript.Echo "Processo de criar. " & _ 
 
 VbNewLine & " linha de comando: " & strCommand & _ 
 
 vbNewLine e "Processo ID: " & intProcessID 
 
 End If 
 6 
 Salve o código em um arquivo VBScript (com extensão ". vbscript" ) . Toda a amostra de código para se conectar a um computador remoto e executar um processo é: 
 
 Set objSWbemLocator = CreateObject (" WbemScripting.SWbemLocator " ) 
 
 Set objWMIService = objSWbemLocator.ConnectServer ( " Some_Computer " , _ 
 
 , _ 
 
 " algum_usuário ", _ 
 
 " alguma_senha ", _ 
 
 " ", _ 
 
 "") 
 
 Definir objProcess = objWMIService.Get ( " Win32_Process " ) 
 
 intReturn = objProcess.Create _ 
 
 ( " algum_comando " , Null, objWMIService , intProcessID ) 
 
 Se intReturn < > 0 Then 
 
 Wscript.Echo "Processo não pôde ser criado . " & _ 
 
 VbNewLine & " linha de comando: " & strCommand & _ 
 
 vbNewLine & " Valor de retorno: " & intReturn 
 
 Else 
 
 Wscript.Echo "Processo de criar. " & _ 
 
 VbNewLine & " linha de comando: " & strCommand & _ 
 
 vbNewLine e "Processo ID: " & intProcessID 
 
 End If 
 7 
 botão direito do mouse no nome do arquivo e selecione " Propriedades". Marque a caixa "Permitir execução do arquivo. " Clique em " Aplicar". Dê um duplo clique no arquivo para executar o processo .