Svar Skrevet 13. juni 2006 Del Skrevet 13. juni 2006 Sitter å lager et script som skal gjøre følgende: "sjekk om dhcp og dns server kjører på Server2, vist en av servicene ikke kjører/maskinen er utilgjengelig, start dns og/eller dhcp på server1" Har fått til koden for å sjekke om dns og dhcp kjører på en angitt maskin, den koden ser slik ut: strComputer = "Server2" Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" _ & strComputer & "\root\cimv2") Set colListOfServices = objWMIService.ExecQuery _ ("Select * from Win32_Service Where Name ='DHCPServer'") For Each objService in colListOfServices Wscript.Echo "Service Name: " & objService.Name & VBNewLine _ & "State: " & objService.State next Set colListOfServices = objWMIService.ExecQuery _ ("Select * from Win32_Service Where Name ='DNS'") For Each objService in colListOfServices Wscript.Echo "Service Name: " & objService.Name & VBNewLine _ & "State: " & objService.State Next Koden for å starte dns/dhcp har jeg også fått til, den ser slik ut: strComputer = "Server1" Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" _ & strComputer & "\root\cimv2") Set colListOfServices = objWMIService.ExecQuery _ ("Select * from Win32_Service Where Name ='DHCPServer'") For Each objService in colListOfServices objService.StartService() Wscript.Echo "Started DHCP Server service" Next Problemet nå er å lage en løkke som starter koden for start av dhcp/dns på server 1 vist tjenestene på server2 er nede/server2 er slått av/nettverksforbindelsen er brutt. Noen som har vært borti noe lignende script, eller har noen tips om hvor jeg bør lete? Lenke til kommentar
tZar Skrevet 13. juni 2006 Del Skrevet 13. juni 2006 If objservice.state = off (??) then --- starte servicekode end if Lenke til kommentar
Svar Skrevet 13. juni 2006 Forfatter Del Skrevet 13. juni 2006 kunne ha fungert, men i den delen som finner ut om servicen er av/eller på ligger det inne at den både skal finne state for dhcp og dns. Må da finne ut en måte og skille ut status for dns og dhcp i egene strenger, som kan brukes videre i if then løkken. hmmm dette kan jeg ikke noe om Lenke til kommentar
tZar Skrevet 13. juni 2006 Del Skrevet 13. juni 2006 kunne ha fungert, men i den delen som finner ut om servicen er av/eller på ligger det inne at den både skal finne state for dhcp og dns. Må da finne ut en måte og skille ut status for dns og dhcp i egene strenger, som kan brukes videre i if then løkken. hmmm dette kan jeg ikke noe om 6298580[/snapback] strComputer = "Server2" Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" _ & strComputer & "\root\cimv2") Set colListOfServices = objWMIService.ExecQuery _ ("Select * from Win32_Service Where Name ='DHCPServer'") For Each objService in colListOfServices 'Wscript.Echo "Service Name: " & objService.Name & VBNewLine _ '& "State: " & objService.State dhcpstate = objservice.state next Set colListOfServices = objWMIService.ExecQuery _ ("Select * from Win32_Service Where Name ='DNS'") For Each objService in colListOfServices 'Wscript.Echo "Service Name: " & objService.Name & VBNewLine _ '& "State: " & objService.State dnsstate=objservice.state Next if dnsstate="off" and dhcpstate="off" then 'starte servicer end if Lenke til kommentar
Svar Skrevet 13. juni 2006 Forfatter Del Skrevet 13. juni 2006 Fungerer heller ikke. scriptet hopper rett over siste if then loop som slår på servicene. Jeg vil tro at det enten er if settningen som er feil eller at det er strengen som skal huske statusen som ikke husker statusen lengere ned i scriptet enn akuratt er og da. Lenke til kommentar
tZar Skrevet 13. juni 2006 Del Skrevet 13. juni 2006 Fungerer heller ikke. scriptet hopper rett over siste if then loop som slår på servicene. Jeg vil tro at det enten er if settningen som er feil eller at det er strengen som skal huske statusen som ikke husker statusen lengere ned i scriptet enn akuratt er og da. 6299064[/snapback] Det er jo ikke så rart. Når scriptet echoet ut staten, var var staten for av og på ? Var staten for av off ? I så fall burde scriptet fungere. Var staten noe annet, så må du bytte ut off med det staten var. For å sjekke hva staten er på de to servicene, så sett inn wscript.echo dnsstate og wscript.echo dhcpstate Lenke til kommentar
Svar Skrevet 13. juni 2006 Forfatter Del Skrevet 13. juni 2006 Glemte og skrive at jeg har prøvd det også, byttet ut off med riktig setning som er "stopped", men det fungerte fremdeles ikke. (prøvde stop også) Jeg er rimelig skker på at når det bare står "DNSState=objService.State" så blir ikke dette husket for resten av skriptet, så når den kommer til "if DHCPState="stopped" & DNSState="Stopped" husker den ikke lenger hva DHCPState og DNSState lenger er. Prøvde med å sette const foran "DNSState=objService.State", men det fungerte ikke sammen med setningen, da den da trengte en statisk text streng. Lenke til kommentar
tZar Skrevet 13. juni 2006 Del Skrevet 13. juni 2006 Glemte og skrive at jeg har prøvd det også, byttet ut off med riktig setning som er "stopped", men det fungerte fremdeles ikke. (prøvde stop også) Jeg er rimelig skker på at når det bare står "DNSState=objService.State" så blir ikke dette husket for resten av skriptet, så når den kommer til "if DHCPState="stopped" & DNSState="Stopped" husker den ikke lenger hva DHCPState og DNSState lenger er. Prøvde med å sette const foran "DNSState=objService.State", men det fungerte ikke sammen med setningen, da den da trengte en statisk text streng. 6299170[/snapback] joda, den husker det for resten av scriptet... det er jo bare å echo'e det rett før if'en for å se at den fortsatt har samme verdi. Lenke til kommentar
tZar Skrevet 13. juni 2006 Del Skrevet 13. juni 2006 For meg så ser det ut til at state skal være tom når tjenestene ikke kjører. Sett if dnsstate<>"Running" and dhcpstate<>"Running" then som if setning, så fungerer det nok Lenke til kommentar
Svar Skrevet 13. juni 2006 Forfatter Del Skrevet 13. juni 2006 Da har jeg blitt klokere og fått et script som fungerer. Tusen takk for all hjelp Scriptet ser slik ut: strComputer = "server2" Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" _ & strComputer & "\root\cimv2") Set colListOfServices = objWMIService.ExecQuery _ ("Select * from Win32_Service Where Name ='DHCPServer'") For Each objService in colListOfServices DHCPStatusen = objService.State next Set nycolListOfServices = objWMIService.ExecQuery _ ("Select * from Win32_Service Where Name ='DNS'") For Each objService in nycolListOfServices DNSStatusen = objService.State Next strComputer = "server1" if DHCPStatusen="Stopped" then ' Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" _ & strComputer & "\root\cimv2") Set startcolListOfServices = objWMIService.ExecQuery _ ("Select * from Win32_Service Where Name ='DHCPServer'") For Each objService in startcolListOfServices objService.StartService() Next else end if strComputer = "server1" if DNSStatusen="Stopped" then Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" _ & strComputer & "\root\cimv2") Set dnsstartcolListOfServices = objWMIService.ExecQuery _ ("Select * from Win32_Service Where Name ='DNS'") For Each objService in dnsstartcolListOfServices objService.StartService() Next else end if Eneste som mangler nå er en "vist server2 ikke ekisterer på nettverket (on error) start dhcp og dns på server1" Har ikke fått til en on error goto sak enda, men finner nok ut av det (vist ikke dere her finner det ut først da) Lenke til kommentar
Alastor Skrevet 13. juni 2006 Del Skrevet 13. juni 2006 Flyttes fra nettverk til generell programmering. (Dersom noen vet et programmeringsforum som passer bedre - rapporter tråden på nytt!) Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå