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 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.
|