Que vous soyez analyste informatique ou utilisateur régulier, automatiser les tâches répétitives sur votre PC Windows est essentiel. Les scripts VBScript (Visual Basic Script) offrent une flexibilité supérieure aux fichiers batch pour récupérer des infos système, gérer les services ou réinitialiser le réseau.
Stockez ces scripts accessibles et exécutez-les d'un double-clic pour gagner un temps précieux. Copiez le code dans le Bloc-notes, enregistrez en .wsf. Voici cinq exemples éprouvés, basés sur WMI et objets COM natifs de Windows.
Chaque script s'exécute avec un double-clic si nommé .wsf et encadré ainsi :
<job>
<script language="VBScript">Fermez par :
WScript.Quit
</script>
</job>Windows reconnaîtra alors le VBScript et l'exécutera correctement. Avertissement : Certains scripts nécessitent des droits administrateur ; exécutez en tant qu'admin pour éviter les erreurs.
Utilisez WMI (Windows Management Instrumentation) pour interroger le système en temps réel. Microsoft documente exhaustivement les classes WMI sur docs.microsoft.com.
Ce script génère un fichier CSV avec infos processeur, batterie et disques. Commencez par créer le fichier :
Set oFSO = CreateObject("Scripting.FileSystemObject")
sFile1 = "MonOrdinateurInfo.csv"
Set oFile1 = oFSO.CreateTextFile(sFile1, True)Requête processeur :
strQuery = "SELECT Family, Manufacturer, NumberOfCores FROM Win32_Processor"
Set colResults = GetObject("winmgmts://./root/cimv2").ExecQuery(strQuery)
oFile1.WriteLine "Informations processeur"
oFile1.WriteLine "------"
For Each objResult In colResults
oFile1.WriteLine "Famille :," & CStr(objResult.Family)
oFile1.WriteLine "Fabricant :," & CStr(objResult.Manufacturer)
oFile1.WriteLine "Nombre de cœurs :," & CStr(objResult.NumberOfCores)
Next
Batterie :
oFile1.WriteLine ""
strQuery = "SELECT Description, Status FROM Win32_Battery"
Set colResults = GetObject("winmgmts://./root/cimv2").ExecQuery(strQuery)
oFile1.WriteLine "Informations batterie"
oFile1.WriteLine "------"
For Each objResult In colResults
oFile1.WriteLine "Description :," & CStr(objResult.Description)
oFile1.WriteLine "Statut :," & CStr(objResult.Status)
NextDisque logique :
oFile1.WriteLine ""
strQuery = "SELECT Name, FreeSpace, Size FROM Win32_LogicalDisk"
Set colResults = GetObject("winmgmts://./root/cimv2").ExecQuery(strQuery)
oFile1.WriteLine "Informations disque"
oFile1.WriteLine "------"
For Each objResult In colResults
oFile1.WriteLine "Nom :," & CStr(objResult.Name)
oFile1.WriteLine "Espace libre :," & CStr(objResult.FreeSpace)
oFile1.WriteLine "Taille :," & CStr(objResult.Size)
NextFermeture :
oFile1.Close
Set oFile1 = Nothing
Set colResults = Nothing
Adaptez les requêtes pour d'autres composants et obtenez des rapports complets en un clic.
Redémarrez un service bogué en secondes. Ajoutez d'abord l'élévation admin :
If Not WScript.Arguments.Named.Exists("elevate") Then
CreateObject("Shell.Application").ShellExecute WScript.FullName, """" & WScript.ScriptFullName & """ /elevate", "", "runas", 1
WScript.Quit
End IfPuis :
Set objShell = CreateObject("WScript.Shell")
strServiceName = InputBox("Nom du service à redémarrer :", "Service")
objShell.Run "cmd.exe", 1, False
WScript.Sleep 1000
objShell.SendKeys "net stop " & strServiceName & "{ENTER}"
WScript.Sleep 2000
objShell.SendKeys "net start " & strServiceName & "{ENTER}"
WScript.Sleep 1000
objShell.SendKeys "exit{ENTER}"Élevez d'abord (code ci-dessus). Demandez les infos :
strUserName = InputBox("Nom d'utilisateur par défaut :", "Utilisateur")
strPassword = InputBox("Mot de passe par défaut :", "Mot de passe")Écriture :
Set wshShell = CreateObject("WScript.Shell")
wshShell.RegWrite "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\DefaultUserName", strUserName, "REG_SZ"
wshShell.RegWrite "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\DefaultPassword", strPassword, "REG_SZ"
Set wshShell = Nothing

Attention : Sauvegardez le registre avant modifications.
Élevez admin. Liste adaptateurs actifs :
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapter WHERE NetEnabled = True")Réinitialisation :
For Each objItem in colItems
objItem.Disable
WScript.Sleep 1000
objItem.Enable
NextSurveillez un site/serveur. Exemple ping :
strTarget = "topsecretwriters.com"
Set WshShell = WScript.CreateObject("WScript.Shell")
intPing = WshShell.Run("ping -n 1 " & strTarget, 0, True)Alerte e-mail si échec (adaptez SMTP) :
Select Case intPing
Case 1
Set objMessage = CreateObject("CDO.Message")
Set objConfig = CreateObject("CDO.Configuration")
objConfig.Load -1
Set Flds = objConfig.Fields
With Flds
.Item("https://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
.Item("https://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
.Item("https://schemas.microsoft.com/cdo/configuration/sendusername") = "votre@email.com"
.Item("https://schemas.microsoft.com/cdo/configuration/sendpassword") = "votre_motdepasse"
.Item("https://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
.Item("https://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465
.Update
End With
With objMessage
Set .Configuration = objConfig
.To = "dest@email.com"
.From = "alert@pc.com"
.Subject = "Site hors ligne"
.TextBody = "Ping échoué pour " & strTarget
.Send
End With
End Select
Ces scripts illustrent le potentiel VBScript pour l'automatisation. Explorez backups, Telnet ou contrôle apps. PowerShell est une alternative moderne, mais VBS reste lightweight.
Qu'avez-vous automatisé ? Partagez en commentaires !
[]