WMI ( Windows Management Instrumentation ) est utilisé pour contrôler les tâches de gestion dans toute l'interface Windows. L'infrastructure est destinée à C /C + + , mais il peut être mis en œuvre par les programmeurs utilisant n'importe quel langage de script compatible Windows , tels que VBScript. WMI est un outil puissant pour les procédures administratives sur le serveur local , mais il est particulièrement utile pour des machines distantes . Pour WMI pour accéder à un ordinateur distant, l'ordinateur distant doit lui permettre de passer le pare-feu . Instructions
1
définir des autorisations sur l'ordinateur distant . Si un administrateur sur "Ordinateur A" a besoin d'accéder à " l'ordinateur B , « il faut laisser le passé "B Computer " pare-feu. Connectez-vous à "Ordinateur B " et ouvrez l'invite de commande . Cliquez sur " Démarrer", " Exécuter" puis tapez " cmd.exe" et appuyez sur "Entrée "
2
Tapez la suivante à l' invite de commande: . " Netsh firewall set service de RemoteAdmin enable" puis appuyez "Entrée".
3
Créer un objet WBI localisateur avec le code suivant :
Set objSWbemLocator = CreateObject (" WbemScripting.SWbemLocator " )
4
connecter à l'ordinateur distant via la «méthode de SWbemLocator.ConnectServer . " Cette fonction retourne un objet " SWbemServices " , qui est utilisé pour exécuter des commandes via la connexion à distance :
objwbemServices = SWbemLocator.ConnectServer (_
[ ByVal strServer ] _
< p> [ ByVal strNamespace ] _
[ ByVal strUser ] _
[ ByVal strPassword ] _
[ ByVal strLocale ] _
[ strAuthority ByVal ] _
[ ByVal iSecurityFlags ] _
[ ByVal objwbemNamedValueSet ] _
)
Où:
strServer est le nom de l'ordinateur distant .
strNamespace peut être laissée en blanc.
strUser est le nom d'utilisateur à utiliser pour se connecter à l'ordinateur distant.
strPassword est le mot de passe de l'utilisateur sur l'ordinateur distant.
strLocale peut être laissée en blanc .
strAuthority peut également être laissée en blanc .
iSecurityFlags peut être réglé sur ( 0x0 ) à faire le script continue de tenter de se connecter jusqu'à ce qu'une connexion soit établie. L'alternative est ( 0x80 ) , dans ce cas, la connexion tentera de charger pendant deux minutes, puis mourir
objwbemNamedValueSet peut être laissée vide
Pour reprendre l'exemple : . .
< p> Set objWMIService = objSWbemLocator.ConnectServer ( " Some_Computer ", _
, _
" un_utilisateur ", _
" un_mot_de_passe ", _
"", _
"")
5
exécuter une commande avec le " Win32_Process classe . " Cette fonction permet d'exécuter une commande sur l'ordinateur distant . Utilisez la syntaxe MS- DOS pour exécuter des commandes dans cette fonction :
uint32 Créer (produits
[ en ] chaîne LigneCommande , AB
[ en ] chaîne CurrentDirectory , AB
[ en ] Win32_ProcessStartup ProcessStartupInformation , AB
[out] uint32 ProcessId
) ;
Où:
LigneCommande est la ligne de commande qui doit être exécutée sur la machine distante .
CurrentDirectory doit être réglé sur null, à moins qu'il n'existe une raison pour spécifier un répertoire .
Win32_ProcessStartup ProcessStartupInformation devrait être l'objet de connexion . Dans ce cas , il fera l'objet d' SWbemLocator.ConnectServer créé à l'étape précédente .
ProcessId deviendra une variable globale contenant l'ID de processus pour cette commande. Entrez un nom de variable unique ici .
La fonction retourne «0» si le processus est réussi. Numéros de code d'erreur sont renvoyés pour les processus défaillants. Pour notre exemple, la fonction peut s'écrire:
Set objProcess = objWMIService.Get ( " Win32_Process " )
intReturn = objProcess.Create _
( " une_commande », null, objWMIService , intProcessID )
Si intReturn < > 0 Then
Wscript.Echo «processus n'a pas pu être créé. " & _
" Ligne de commande: " vbNewLine & & strCommand & _
vbNewLine et " Valeur de retour: " & intReturn
Else
Wscript.Echo «Processus de création. " & _
" Ligne de commande: " vbNewLine & & strCommand & _
vbNewLine et " ID du processus: " & intProcessID
End If
6 < p > Enregistrer le code dans un fichier VBScript (avec l'extension " . VBScript " ) . L' ensemble de l'échantillon de code pour se connecter à un ordinateur distant et d'exécuter un processus :
Set objSWbemLocator = CreateObject (" WbemScripting.SWbemLocator " )
Set objWMIService = objSWbemLocator.ConnectServer ( " Some_Computer », _
, _
" un_utilisateur ", _
" un_mot_de_passe ", _
"", _
"") Photos
Set objProcess = objWMIService.Get ( " Win32_Process " )
intReturn = objProcess.Create _
( " une_commande ", null, objWMIService , intProcessID )
< p> Si intReturn < > 0 Then
Wscript.Echo «processus n'a pas pu être créé. " & _
" Ligne de commande: " vbNewLine & & strCommand & _
vbNewLine et " Valeur de retour: " & intReturn
Else
Wscript.Echo «Processus de création. " & _
" Ligne de commande: " vbNewLine & & strCommand & _
vbNewLine et " ID du processus: " & intProcessID
End If
7 < p> cliquez-droit sur le nom du fichier et sélectionnez "Propriétés". Cochez la case " Autoriser l'exécution de ce fichier. " Cliquez sur «Appliquer ». Double-cliquez sur le fichier pour lancer le processus.