Gå til innhold

Trenger hjelp til et windows script


Anbefalte innlegg

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
Videoannonse
Annonse

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 :hmm:

Lenke til kommentar
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  :hmm:

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

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
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

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
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

Da har jeg blitt klokere og fått et script som fungerer. Tusen takk for all hjelp :D

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...