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 .