' ---------------------------------------------------------- ' Script énumérant les services avec ' - leur nom court ' - leur mode de démarrage ' - leur état ' triés par le compte sous lequel ils sont lancés ' ' ce script doit être exécuté sous un compte administrateur ' ' JC BELLAMY © 2010 ' ---------------------------------------------------------- Const SW_HIDE=0 Const SW_SHOWNORMAL=1 ForWriting = 2 Set net = Wscript.CreateObject("WScript.Network") Set shell = WScript.CreateObject("WScript.Shell") Set fso = WScript.CreateObject("Scripting.FileSystemObject") Set Udict = WScript.CreateObject("Scripting.Dictionary") Set DataList = CreateObject("System.Collections.ArrayList") Udict.CompareMode = vbTextCompare Set objLocator = CreateObject("WbemScripting.SWbemLocator") If Err.Number then msg="Erreur 0x" & CStr(Hex(Err.Number)) & " survenue dans la création de l'objet locator." If Err.Description <> "" Then msg=msg & " : " & Err.Description Err.Clear wscript.echo msg wscript.quit End If Remote=ucase(net.ComputerName) NameSpace="root\CIMV2" Set ObjService = objLocator.ConnectServer(Remote, NameSpace, "", "") If Err.Number then msg="Erreur 0x" & CStr(Hex(Err.Number)) & " survenue dans la connexion à " & remote If Err.Description <> "" Then msg=msg & " : " & Err.Description wscript.echo msg wscript.quit End If ObjService.Security_.impersonationlevel = 3 Set ServiceSet=ObjService.ExecQuery("SELECT * FROM Win32_service") T="Services de l'ordinateur " & Remote & " classés par compte :" S=String(Len(T),"=") & VBCRLF & T & VBCRLF & String(Len(T),"=") for each Service in ServiceSet UName=Service.StartName Serv=Service.DisplayName & " (" & Service.Name & " : " & Service.StartMode & "/" & Service.state & ")" If UDict.Exists(UName) Then OldList=UDict.Item(UName) UDict.Item(UName)=OldList & VBCRLF & Serv Else UDict.Add UName, Serv End If next TabName = UDict.Keys ListServ = UDict.Items For i = 0 To UDict.Count -1 S=S & VBCRLF & VBCRLF S=S & TabName(i) TabServ=Split(ListServ(i),VBCRLF) DataList.Clear For j = lbound(TabServ) To Ubound(TabServ) DataList.Add TabServ(j) next DataList.Sort For Each Serv in DataList S=S & VBCRLF & " " & Serv next next Set dirtemp = fso.GetSpecialFolder(2) nomtxt = dirtemp & "\liste-svc.txt" Set fictxt=fso.OpenTextFile(nomtxt, ForWriting,true) fictxt.WriteLine S fictxt.close set PrinterSet = GetObject("winmgmts:{impersonationLevel=impersonate}!//" & Computer).ExecQuery _ ("SELECT * FROM Win32_Printer") DefPrint="imprimante par défaut" for each Printer in PrinterSet Attrib=Cint(Printer.Attributes) If (Attrib and 4)=4 then DefPrint=Printer.Caption exit for end if next prompt="La liste des services a été stockée dans" & VBCRLF & _ "le fichier " & nomtxt & VBCRLF & VBCRLF & _ "Appuyer sur :" & VBCRLF & _ " OUI pour l'imprimer sur " & DefPrint & VBCRLF & _ " NON pour l'ouvrir avec le bloc-notes" rep=MsgBox(prompt, vbYesNo + vbQuestion, curdir) If rep=vbYes Then commutateur=" /p " show=SW_HIDE else commutateur=" " show=SW_SHOWNORMAL end if ' Impression ou affichage du fichier à l'aide du bloc-notes commande=shell.ExpandEnvironmentStrings("%windir%\notepad.exe" & commutateur & chr(34) & nomtxt & chr(34)) shell.Run commande, show, false Wscript.quit