Avatar billede Slettet bruger
15. april 2008 - 14:13 Der 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.

På forhånd mange tak!

Med venlig hilsen,
Thomas
Avatar billede Slettet bruger
15. april 2008 - 14:23 #1
Avatar billede Slettet bruger
16. april 2008 - 10:57 #2
Hejsa.
Tak for link.

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
Avatar billede 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
Avatar billede 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å.
Avatar billede 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?:

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colRunningServices = objWMIService.ExecQuery("Select * from Win32_Service where Name = 'Telephony'")

For Each objService in colRunningServices
Wscript.Echo objService.DisplayName & VbTab & objService.State
Next
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester