WMI ( Windows Management Instrumentation ) se utiliza para controlar las tareas de administración de cualquier interfaz de Windows . La infraestructura está dirigido a C /C + + programadores , pero puede ser implementado por los programadores que utilizan cualquier lenguaje de programación compatible con Windows, como VBScript. WMI es una poderosa herramienta para los procesos administrativos en el servidor local , pero es particularmente útil para las máquinas remotas . Con el fin de WMI para acceder a un ordenador remoto , el equipo remoto debe permitir que pase el firewall. Instrucciones
1
establecer permisos en el equipo remoto . Si un administrador en "Equipo A" tiene que acceder a " equipo B ", se le debe permitir más allá del " equipo B " firewall. Acceda a " equipo B " y abra el símbolo del sistema . Haga clic en " Inicio", " Ejecutar", escribe " cmd.exe " y presionar " Enter"
2
Escriba lo siguiente en el símbolo del sistema : . " Netsh firewall set servicio RemoteAdmin enable" y pulse " Enter".
3
Crear un localizador de objetos WBI con el siguiente código :
Set objSWbemLocator = CreateObject ( " WbemScripting.SWbemLocator ")
4
Conectar al ordenador remoto a través del "método SWbemLocator.ConnectServer . " Esta función devuelve un objeto " SWbemServices " , que se utiliza para ejecutar comandos a través de la conexión remota :
objwbemServices = SWbemLocator.ConnectServer (_
[ ByVal strServer ] , _
< p> [ ByVal strNamespace ] , _
[ ByVal strUser ] , _
[ ByVal strPassword ] , _
[ ByVal strLocale ] , _
[ strAuthority ByVal ] , _
[ ByVal iSecurityFlags ] , _
[ ByVal objwbemNamedValueSet ] _
)
Dónde :
strServer es el nombre del equipo remoto .
strNamespace puede dejarse en blanco .
strUser es el nombre de usuario que se utilizará para iniciar sesión en el equipo remoto.
strPassword es la contraseña del usuario en el equipo remoto.
strLocale puede dejarse en blanco .
strAuthority también puede dejarse en blanco.
iSecurityFlags se puede ajustar a ( 0x0 ) para hacer que continúe la secuencia de comandos para intentar conectarse hasta que se establezca una conexión . La alternativa es ( 0x80 ) , en cuyo caso la conexión se intentará cargar durante dos minutos , y luego morir
objwbemNamedValueSet puede dejarse en blanco
Para continuar con el ejemplo : . .
< p> Set objWMIService = objSWbemLocator.ConnectServer ( " Some_Computer ", _
, _
" some_user ", _
" some_pass ", _
" ", _
"")
5
Ejecutar un comando con la "Clase Win32_Process . " Esta función se ejecutará un comando en el equipo remoto . Utilice la sintaxis de MS -DOS para ejecutar comandos en esta función :
uint32 Crear (
[ en ] string CommandLine ,
[ en ] string CurrentDirectory ,
< p > [ en ] Win32_ProcessStartup ProcessStartupInformation ,
[out] uint32 ProcessId
) ;
Dónde :
CommandLine es la línea de comandos que se va a ejecutar en la máquina remota se debe establecer .
CurrentDirectory en Null a menos que haya una razón para especificar un directorio.
Win32_ProcessStartup ProcessStartupInformation debe ser el objeto de conexión. En este caso , será el objeto SWbemLocator.ConnectServer creado en el paso anterior .
ProcessId se convertirá en una variable global que contiene el ID de proceso de este mandato . Introduzca un nombre de variable única aquí .
La función devuelve " 0 " si el proceso tiene éxito . Números de código de error se devuelven a los procesos que han fallado. Para nuestro ejemplo, la función se puede escribir :
Set objProcess = objWMIService.Get ( " Win32_Process " )
intReturn = objProcess.Create _
( " Some_Command " , Null, objWMIService , intProcessID )
Si intReturn < > 0 Entonces
Wscript.Echo " El proceso no pudo ser creada. " & _
" Línea de comandos: " Y vbNewLine y strCommand & _
vbNewLine y " Valor de retorno :" & intReturn
demás
Wscript.Echo "Proceso de creación. " & _
" Línea de comandos: " Y vbNewLine y strCommand & _
vbNewLine & " Id. de proceso: " & intProcessID
End If
6 < p> Guarde el código en un archivo VBScript (con la extensión " . VBScript ") . El ejemplo de código entero para conectarse a un equipo remoto y ejecutar un proceso es:
Set objSWbemLocator = CreateObject ( " WbemScripting.SWbemLocator " )
Set objWMIService = objSWbemLocator.ConnectServer ( " Some_Computer " , _
, _
" some_user ", _
" some_pass ", _
" ", _
"")
Set objProcess = objWMIService.Get ( " Win32_Process " )
intReturn = objProcess.Create _
( " Some_Command " , Null, objWMIService , intProcessID )
< p> Si intReturn < > 0 Entonces
Wscript.Echo " El proceso no pudo ser creada. " & _
" Línea de comandos: " Y vbNewLine y strCommand & _
vbNewLine y " Valor de retorno :" & intReturn
demás
Wscript.Echo "Proceso de creación. " & _
" Línea de comandos: " Y vbNewLine y strCommand & _
vbNewLine & " Id. de proceso: " & intProcessID
End If
7 < p> Haga clic en el nombre del archivo y seleccione " Propiedades". Marque la casilla "Permitir ejecutar el archivo . " Haga clic en " Aplicar". Haga doble clic en el archivo para ejecutar el proceso .