09. oktober 2004 - 18:35Der er
12 kommentarer og 2 løsninger
Lille BAT-script til VBS
Hej Jeg har et lille bat-script som jeg gerne vil have lavet til et VBS. Men hvordan gør jeg det?
Jeg har disse tre linjer... Først stoppes en servive. Så slettes den med instsrv.exe. Tilsidst bliver der holdt en pause på 1 sek før resten af mit script må gå videre...
net stop poweroff instsrv.exe poweroff REMOVE sleep.exe 1
strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colServiceList = objWMIService.ExecQuery("Associators of " _ & "{Win32_Service.Name='NetDDE'} Where " _ & "AssocClass=Win32_DependentService " & "Role=Antecedent" ) For each objService in colServiceList objService.StopService() Next
' her teminerer vi en service
' VBScript source code strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colProcessList = objWMIService.ExecQuery _ ("SELECT * FROM Win32_Process WHERE Name = 'iexplore.exe'") For Each objProcess in colProcessList objProcess.Terminate() Next
Tak for det... men jeg syntes ikke rigtig at det virker. Jeg har en service som hedder: poweroff, men den bliver ikke lukket. Har prøvet med: strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colServiceList = objWMIService.ExecQuery("Associators of " _ & "{Win32_Service.Name='poweroff'} Where " _ & "AssocClass=Win32_DependentService " & "Role=Antecedent" ) For each objService in colServiceList objService.StopService() Next
ahhh...jeg tror kune du behøver at terminerer servicen...så brug det sidte jeg skrev:
' VBScript source code strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colProcessList = objWMIService.ExecQuery _ ("SELECT * FROM Win32_Process WHERE Name = 'iexplore.exe'") For Each objProcess in colProcessList objProcess.Terminate() Next
hmmm, scriptet gør slet ikke noget... Servicen poweroff lukkes ikke ned, ej heller kommer der en fejl :(
Min bat-fil virker staig fint, men jeg ville jo gerne have vbs'en til at køre. Jeg har erfaret at man er nød til først at stoppe en servive før man kan slette den og det er derfor jeg gør begge ting. Her er vbs-koden jeg har prøvet:
' her stopper vi en service
strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colServiceList = objWMIService.ExecQuery("Associators of " _ & "{Win32_Service.Name='poweroff'} Where " _ & "AssocClass=Win32_DependentService " & "Role=Antecedent" ) For each objService in colServiceList objService.StopService() Next
' her teminerer vi en service
' VBScript source code strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colProcessList = objWMIService.ExecQuery _ ("SELECT * FROM Win32_Process WHERE Name = 'poweroff'") For Each objProcess in colProcessList objProcess.Terminate() Next
' her venter vi
Wscript.Sleep 100
Service'en hedder poweroff (dens fil hedder poweroff.exe). Når vbs koden er kørt kan servicen stadig ses i computeradministration under servises på ligefod med feks spooleren... Gør jeg noget galt?
Ok, ny bliver service'en stoppet med denne: strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colServiceList = objWMIService.ExecQuery("Associators of " _ & "{Win32_Service.Name='poweroff'} Where " _ & "AssocClass=Win32_DependentService " & "Role=Antecedent" ) For each objService in colServiceList objService.StopService() Next 'Wscript.Sleep 2000 Set colServiceList = objWMIService.ExecQuery _ ("Select * from Win32_Service where Name='poweroff'") For each objService in colServiceList errReturn = objService.StopService() Next
Men jeg mangler stadig at slette/afinstalere den, men hvordan?
strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colListOfServices = objWMIService.ExecQuery _ ("Select * from Win32_Service Where Name = 'poweroff'") For Each objService in colListOfServices objService.StopService() objService.Delete() Next
Hvad nu hvis jeg gerne vil instalere en service igen? Jeg bruger pt denne i en bat-fil: C:\poweroff\poweroff poweroff -warn -warntime 120 -msg "PC'en bliver slukket om to minutter\nHusk at gemme dit arbejde!\n\n\nDu kan annulere nedlukningen ved at trykke CANCEL" -force -scheduled -time 12:25 -days m,t,w,th,f,s,su -create_service
programmet poweroff med dens parametre instalere selv en service... jeg har prøvet med: Set shell = WScript.CreateObject("wscript.shell") shell.run "C:\poweroff\poweroff poweroff -warn -warntime 120 -msg "PC'en bliver slukket om to minutter\nHusk at gemme dit arbejde!\n\n\nDu kan annulere nedlukningen ved at trykke CANCEL" -force -scheduled -time 12:25 -days m,t,w,th,f,s,su -create_service"
Men der kommer en fejl: Slut på sætning var ventet... gør jeg noget galt?
Nej jeg fik det ikke helt til at virke, men du hjalp mig godt på vej... Tal for hjælpen
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.