Come eseguire un processo su un PC remoto con WMI

February 6

Come eseguire un processo su un PC remoto con WMI


WMI (Windows Management Instrumentation) è utilizzato per controllare le attività di gestione in qualsiasi interfaccia di Windows. L'infrastruttura è rivolto a programmatori C / C ++, ma può essere implementato da programmatori che utilizzano qualsiasi linguaggio di scripting Windows-compatibile, come ad esempio 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.

istruzione

1 Impostare le autorizzazioni sul computer remoto. Se un amministratore su "Computer A" ha bisogno di accedere "Computer B," deve essere consentito oltre il firewall "Computer B". Entra in "Computer 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: ". Inserire" "netsh firewall set servizio RemoteAdmin abilitazione", quindi premere

3 Creare un oggetto localizzatore WBI con il seguente codice:

Set objSWbemLocator = CreateObject ( "WbemScripting.SWbemLocator")

4 Connettersi 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], _

[ByVal strNamespace], _

[ByVal strUser], _

[ByVal strPassword], _

[ByVal strLocale], _

[ByVal strAuthority], _

[ByVal iSecurityFlags], _

[ByVal objwbemNamedValueSet] _

)

Dove:

strServer è il nome del computer remoto.

strNamespace può essere lasciato vuoto.

strUser è il nome utente da utilizzare per l'accesso 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) per 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:

Set objWMIService = objSWbemLocator.ConnectServer ( "Alcuni

computer",

, _

"Some_User", _

"Some_Pass", _

"", _

"") 5 Eseguire un comando con il "Win32_Process Class". Questa funzione verrà eseguito un comando sul computer remoto. Utilizzare la sintassi di MS-DOS per eseguire comandi in questa funzione:

UINT32 Crea (

[In] CommandLine stringa,

[In] CurrentDirectory stringa,

[In] Win32_ProcessStartup ProcessStartupInformation,

[Out] uint32 ProcessId

);

Dove:

CommandLine è la riga di comando che deve essere eseguito sul computer remoto.

CurrentDirectory deve essere impostato su Null a meno che non ci sia un motivo per specificare una directory.

Win32_ProcessStartup ProcessStartupInformation dovrebbe essere l'oggetto di connessione. In questo caso, sarà oggetto SWbemLocator.ConnectServer creato nella fase precedente.

ProcessId diventerà una variabile globale che contiene l'ID di processo per questo comando. Inserire un nome variabile univoco qui.

La funzione restituisce "0" se il processo va a buon fine. Codici di errore vengono restituiti per i processi falliti. Per il nostro esempio, la funzione può essere scritta:

Set objProcess = objWMIService.Get ( "Win32_Process")

intReturn = objProcess.Create _

("Some_Command", Null, objWMIService, intProcessID)

Se intReturn <> 0 Then

Wscript.Echo "Process could not be created." & _

vbNewLine & "Riga di comando:" & strCommand & _

vbNewLine & "Valore restituito:" & intReturn

Altro

Wscript.Echo "Process created." & _

vbNewLine & "Riga di comando:" & strCommand & _

vbNewLine & "ID processo:" & intProcessID

Finisci se

6 Salvare il codice in un file VBScript (con estensione ".vbscript"). L'esempio di codice intero per la connessione a un computer remoto ed eseguire un processo è:

Set objSWbemLocator = CreateObject ( "WbemScripting.SWbemLocator")

Set objWMIService = objSWbemLocator.ConnectServer ( "Alcuni

computer",

, _

"Some_User", _

"Some_Pass", _

"", _

"")

Set objProcess = objWMIService.Get ( "Win32_Process")

intReturn = objProcess.Create _

("Some_Command", Null, objWMIService, intProcessID)

Se intReturn <> 0 Then

Wscript.Echo "Process could not be created." & _

vbNewLine & "Riga di comando:" & strCommand & _

vbNewLine & "Valore restituito:" & intReturn

Altro

Wscript.Echo "Process created." & _

vbNewLine & "Riga di comando:" & strCommand & _

vbNewLine & "ID processo:" & intProcessID

Finisci se

7 Fare clic destro sul nome del file e selezionare "Proprietà". Selezionare la casella per "permettere l'esecuzione di questo file." Fai clic su "Applica". Fare doppio clic sul file per eseguire il processo.