15. april 2008 - 14:13Der er
4 kommentarer og 1 løsning
Tjekke filer og om proces/service kører på remote computer
Hejsa.
Jeg skal have lavet et script i VbScript, der afvikles som et login-script i en group policy i AD.
Scriptet skal bruges til at bestemme hvorvidt vores antivirus-løsning er installeret på klienten - eller i hvert fald om selve antivirus-agenten er installeret og om den er startet.
Jeg tænker mig noget i retning af:
- Tjek om specifikke filer er placeret i c:\windows
- Tjek om processen xxx kører på klienten.
- Hvis filerne ikke er placeret i c:\windows, kopier dem derned fra netværks-share.
- Hvis processen ikke kører, start den.
Er der evt. nogle, der kan pege mig i den rigtige retning? Med forslag- og eller programkode, gerne links til tutorials med dette emne beskrevet.
Jeg har selv googlet lidt på emnet og har fundet et script som jeg har forsøgt at modificere en del. Det script jeg har ligger alle services med et bestemt navn ind i en collection, hvorefter navnet på den givne service hentes ud fra denne collection og lægges i en string, der til sidst udskrives.
Nu vil jeg gerne lave det sådan, at i stedet for en collection (jeg har jo kun én service), vil jeg gerne hente det ud med en query, der lægger resultatet ind i et service-object, der så kan arbejdes videre med derfra.
Aaltså, jeg vil gerne ende op med et service-object for den givne service, hvor jeg kan teste på om den for det første er installeret (må kunne tjekkes for om resultatet er tomt eller null) og herefter om service er startet osv.
Jeg har nu følgende modificerede script:
strComputer = "." Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 'Set objService = objWMIService.Get("Select * from Win32_Service Where Name = 'AvgAgent'") Set objService = objWMIService.Get("winmgmts:Win32_Service=Alerter")
strServiceList = objService.Name
WScript.Echo strServiceList
Synes godt om
Slettet bruger
16. april 2008 - 10:59#3
Prøver lige med det rigtige script, der på nuværende tidspunkt virker (det andet herover er et forsøg på at modificere) :-)
Option Explicit Dim strComputer, objWMIService, colListOfServices, objService, strServiceList
strComputer = "." Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colListOfServices = objWMIService.ExecQuery("Select * from Win32_Service Where Name = 'AvgAgent'")
For Each objService In colListOfServices strServiceList = objService.Name Next
WScript.Echo strServiceList
Synes godt om
Slettet bruger
16. april 2008 - 12:15#4
Hej. Jeg tror jeg fandt en løsning. Ved ikke hvor pænt det er i praksis, men da jeg kun reelt returnerer én enkelt service i min collection, kan jeg faktisk tilgå den på samme måde som hvis jeg returnerede selve service-objektet.
Option Explicit Dim strComputer, objWMIService, colListOfServices, objService, strServiceList
strComputer = "." Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colListOfServices = objWMIService.ExecQuery("Select * from Win32_Service Where Name = 'AvgAgent'")
For Each objService In colListOfServices If objService.Name = "avgagent" Then If objService.State = "Stopped" Then MsgBox objService.Name & " er " & objService.State MsgBox "Start service?" objService.StartService() MsgBox "Service startet..." Else MsgBox objService.Name & " er startet" End If End If Next
Jeg kan så herfra arbejde videre med det, der skal tjekkes på.
Synes godt om
Slettet bruger
16. april 2008 - 12:29#5
Underligt, den her vil ikke køre eller den returnere ikke noget, kan du se en fejl?:
Set colRunningServices = objWMIService.ExecQuery("Select * from Win32_Service where Name = 'Telephony'")
For Each objService in colRunningServices Wscript.Echo objService.DisplayName & VbTab & objService.State Next
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.