WMI (Windows Management Instrumentation ) è utilizzato per controllare le attività di gestione in qualsiasi interfaccia di Windows . L'infrastruttura è rivolto a C /C + + programmatori , ma può essere implementato da programmatori che utilizzano qualsiasi linguaggio di scripting di Windows - compatibile, come VBScript . WMI è un potente strumento per i processi amministrativi sul server locale , ma è particolarmente utile per i computer remoti . Al fine di WMI per accedere a un computer remoto , il computer remoto deve consentire di passare il firewall . Istruzioni
1
impostare le autorizzazioni sul computer remoto . Se un amministratore su " Computer A " deve accedere a "Computer B , " deve essere consentito oltre il " B Computer " firewall . Log in " Informatica B " e aprire il prompt dei comandi . Fare clic su "Start ", " Esegui ", quindi digitare "cmd.exe " e premere "Invio"
2
Digitare quanto segue al prompt dei comandi : " . Netsh firewall set service RemoteAdmin abilitazione ", quindi premere "Enter ".
3
Creare un oggetto WBI localizzatore con il seguente codice :
objSWbemLocator = CreateObject ( " WbemScripting.SWbemLocator " ) economici 4
Collegare al computer remoto tramite il "Metodo SWbemLocator.ConnectServer . " Questa funzione restituisce un oggetto " SWbemServices " , che viene utilizzato per eseguire comandi tramite la connessione remota :
objwbemServices = SWbemLocator.ConnectServer ( _
[ ByVal strServer ] , _
< p > [ ByVal strNamespace ] , _
[ ByVal strUser ] , _
[ ByVal strPassword ] , _
[ ByVal strLocale ] , _
[ strAuthority ByVal ] , _
[ ByVal iSecurityFlags ] , _
[ ByVal objwbemNamedValueSet ] _
) per
Dove :
strServer è il nome del computer remoto .
strNamespace può essere lasciato vuoto .
strUser è il nome utente da utilizzare per accedere al computer remoto .
strPassword è la password per l'utente sul computer remoto .
strLocale può essere lasciato vuoto .
strAuthority può anche essere lasciato vuoto .
iSecurityFlags può essere impostato su ( 0x0 ) a rendere lo script continuerà a tentare di connettersi fino a quando viene stabilita una connessione . L'alternativa è ( 0x80 ) , nel qual caso il collegamento tenterà di caricare per due minuti , poi morire
objwbemNamedValueSet può essere lasciato vuoto
Per continuare l'esempio : . .
< p > Set objWMIService = objSWbemLocator.ConnectServer ( " Some_Computer " , _
, _
" some_user " , _
" Some_Pass " , _
" " , _
" " ) economici 5
eseguire un comando con il " Win32_Process classe . " Questa funzione verrà eseguito un comando sul computer remoto . Utilizzare la sintassi di MS-DOS per eseguire comandi in questa funzione :
uint32 Create (
[ in] Stringa CommandLine , Stati
[ in] Stringa CurrentDirectory , Stati < p > [ in] Win32_ProcessStartup ProcessStartupInformation , Stati
[out ] uint32 ProcessId
) ;
Dove :
CommandLine è la linea di comando che deve essere eseguito sulla macchina remota .
CurrentDirectory dovrebbe essere impostata su null a meno che non ci sia una ragione per specificare una directory .
Win32_ProcessStartup ProcessStartupInformation dovrebbe essere l' oggetto di connessione . In questo caso , sarà l'oggetto SWbemLocator.ConnectServer creato nel passaggio precedente .
ProcessId diventerà una variabile globale contenente l' ID di processo per questo comando . Immettere un nome di variabile univoco qui .
La funzione restituisce "0" se il processo è riuscito. Codici di errore vengono restituiti per i processi non riusciti . Per il nostro esempio, la funzione può essere scritta :
objProcess = objWMIService.Get ( " Win32_Process " ) per
intReturn = objProcess.Create _
( " un_qualche_comando " , Null , objWMIService , intProcessID ) per
intReturn < > 0 Then
Wscript.Echo "Processo non può essere creata . " & _
VbNewLine & " Riga di comando: " & strCommand & _
vbNewLine & " Valore di ritorno : " & intReturn
Else
Wscript.Echo "Processo creato. " & _
VbNewLine & " Riga di comando: " & strCommand & _
vbNewLine & " ID processo: " & intProcessID
End If
6 < p > Salvare il codice in un file VBScript ( con estensione " . vbscript" ) . L'intero codice di esempio per connettersi a un computer remoto ed eseguire un processo è :
objSWbemLocator = CreateObject ( " WbemScripting.SWbemLocator " ) per
objWMIService = objSWbemLocator.ConnectServer ( " Some_Computer " , _
, _
" some_user " , _
" Some_Pass " , _
" " , _
" " )
objProcess = objWMIService.Get ( " Win32_Process " ) per
intReturn = objProcess.Create _
( " un_qualche_comando ", null , objWMIService , intProcessID ) per < p > Se intReturn < > 0 Then
Wscript.Echo "Processo non può essere creata . " & _
VbNewLine & " Riga di comando: " & strCommand & _
vbNewLine & " Valore di ritorno : " & intReturn
Else
Wscript.Echo "Processo creato. " & _
VbNewLine & " Riga di comando: " & strCommand & _
vbNewLine & " ID processo: " & intProcessID
End If
7 < p > pulsante destro del mouse sul nome del file e selezionare " Proprietà". Controllare la casella " Consenti l'esecuzione di questo file . " Fare clic su "Applica ". Fare doppio clic sul file per eseguire il processo .