MCSEboard.de MCSE Forum

RSS Feed URL: http://www.mcseboard.de/news/rss.xml
Category: Europe | Total Views: 25292

Latest entries from this feed

VB Script - Hilfe gesucht.

Posted on 18 April 2017 | 12:55 pm by

Hallo,

 

Ich bin, was Scripting angeht ein echter Anfänger und versuche gerade aber eine Arbeitshilfe zu erstellen. Es soll für den Nutzer des Scriptes möglich sein über ein Dialogfeld den PC und dessen Status zu ermitteln. (online/Offline) und danach entsprechend einen bestimmten lokalen Dienst neu starten, da dieser wiederkehrend Probleme bereitet.

Obwohl der Dienst gestartet ist, kann das Programm nicht ausgeführt werden. Nach einen Neustart des Dienstes geht alles wieder.

 

Ich habe also auf der Suche das eine oder andere VBScript gefunden (Google) welches auch für sich funktioniert. Allerdings bekomme ich diese Scripte nicht zusammen verarbeitet.

 

1.) Script von Dieseyer (IP-Adresse anhand des Namens ermitteln) leider ohne Option Explicit weil es sonst nicht läuft.

 

Script:

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Set WSHShell  = WScript.CreateObject("WScript.Shell")
Set FSO       = CreateObject("Scripting.FileSystemObject")
Set WSHNet    = WScript.CreateObject("WScript.Network")

Ziel          = "~tmp~.tmp"
PCname        = "PC Name hier eintragen"
PCname        = InputBox("Von welchen PC soll die IP-Adr. ermittelt werden?", WScript.ScriptName, PCname)

WSHShell.run ("%comspec% /c Ping " & PCname & " -n 1 -w 500 > " & Ziel), 0, True     ' Ping nur einmal ausführen
set WSHShell = nothing

Set FileIn = fso.OpenTextFile(Ziel, 1 )                  ' Datei zum Lesen öffnen
  TextX = FileIn.ReadAll                                      ' alles lesen
          FileIn.Close
Set FileIn = nothing
  if fso.FileExists(Ziel) Then fso.DeleteFile(Ziel), True     ' Datei löschen
 
TextX = Split(TextX, vbCRLF)                                  ' alles gelesene in Zeilen aufteilen

for i1 = 0 to ubound(TextX)                                   ' jede Zeile überprüfen
  If InStr(UCase(TextX(i1)), "TTL=")  Then                    ' ob TTL= enthalten ist, wenn ja (PING war erfolgreich)

' Bei der Ping-Ausgabe befindet sich hinter der IP-Adresse ein ":" - was links  vom ":" steht, ist interessant
  EndIPadr   = Mid(TextX(i1), 1, InStr(UCase(TextX(i1)), ":") -1 ) 

' Bei der Ping-Ausgabe befindet sich   vor  der IP-Adresse ein " " - was rechts vom " " steht, ist die IP-Adr.
  IPadr = Mid(EndIPadr, InStrRev(EndIPadr, " ") +1 )
    End If
  next

if     IPadr = "" then MsgBox "Von   " & PCname & "   konnte die IP-Adr. nicht ermittelt werden! Ursache: Offline oder Abbruch", , WScript.ScriptName

 

- hier sollte sich das ganze Script beenden, da der PC offline ist.

 

if not IPadr = "" then MsgBox PCname & "   hat die IP-Adr.   " & IPadr                               , , WScript.ScriptName

 

- wenn diese Meldung erscheint gehe weiter zu Script 2 sozusagen.

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

jetzt möchte ich gern den eingegebenen Namen über die Inputbox weiterverwenden für das kommende folgende Script

 

Bedingung dazu: Ist der PC Offline soll das Script  beendet werden. Ansonsten soll es weitergehen und folgendes tun:

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

  ' VBScript Restart Service.vbs
  ' Sample script to Stop or Start a Service
  
  Dim objWMIService, objItem, objService
  Dim colListOfServices, strComputer, strService, intSleep
  strComputer = "." hier weiß ich nicht wie dieses Script den oben benutzten Namen übernimmt. Ich will ja den PC-Namen nur 1. eintragen müssen. :confused: 
   intSleep = 15000
  WScript.Echo " Click OK und warte etwa " & intSleep & " Millisekunden! Eine neue Meldung erscheint"

  'On Error Resume Next
  ' NB strService is case sensitive.
  strService = " 'meinService den ich neu starten will' "
  Set objWMIService = GetObject("winmgmts:" _
  & "{impersonationLevel=impersonate}!\\" _
  & strComputer & "\root\cimv2")
  Set colListOfServices = objWMIService.ExecQuery _
  ("Select * from Win32_Service Where Name ="_
  & strService & " ")
  Wscript.Echo "Der Service wird nun neu gestartet! Click OK und warte bis zur Fertigmeldung"
  For Each objService in colListOfServices
  objService.StopService()
  WSCript.Sleep intSleep
  objService.StartService()
  Next
  WScript.Echo "Der "& strService & " service wurde neu gestartet"
  WScript.Quit
  ' End of Example WMI script to Start / Stop services
        ' =====================================================================

 

 

Ich würde mich freuen  entsprechende Hilfe hier zu finden. Wichtig ist tatsächlich die Inputbox, denn der Anwender sollte nicht das Script selbst bearbeiten müssen, sondern nur die Eingabe des richtigen PC Namen eintragen müssen. Sollte jemand eine bessere Möglichkeit über Powershell oder Batch kennen, wäre ich dafür auch offen. 

 

Hinweis eine ganz einfache Batch mit SC \\ PCnamen stop und start Service habe ich schon. Ist aber eben nicht so anwenderfreundlich :nene:

 

 

Gruß Jan :)



Related products