Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

VBS - Sub soll um eine bestimme Uhrzeit gestartet werden

Frage Entwicklung VB for Applications

Mitglied: Fixu

Fixu (Level 1) - Jetzt verbinden

11.05.2009, aktualisiert 10:56 Uhr, 5598 Aufrufe, 14 Kommentare

Ich habe ein VBS Script welches um 2:00 Uhr einen Prozess killt und den selbigen um 3:00 wieder startet. Dies habe ich in einem Skript mit 2 Subs gelöst, Sub kill und Sub start. Beide sind in einem loop da es täglich ausgeführt wird und das Script immer im Hintergrund läuft. Damit dies mit der Zeitplanung hin kommt, arbeite ich mit einem Sleep. Dies ist aber sehr mühsam, da jedes Mal bei einem Neustart des Skripts die Sleepdauer neu ausgerechnet und eingetragen werden muss. Daher möchte ich dies via Uhrzeit steuern. Sprich, wenn die Systemzeit = 2:00 Uhr starte Sub kill, wenn Systemzeit = 3:00 starte Sub start. Wie kriege ich das hin in VBS?
Mitglied: 16568
11.05.2009 um 11:01 Uhr
MUHAHAHAHAHAHAHHAAHHAHAHA, selten so gelacht...

Frage: kennst Du den Taskplaner?

Machst Du 2x Script, eines für 2:00 Uhr, anderes für 3:00 Uhr...


Lonesome Walker
Bitte warten ..
Mitglied: Fixu
11.05.2009 um 11:05 Uhr
Grundsätzlich hast du Recht, es ist wie ein Task für den Tasklplaner. Aber auf der Maschine habe ich keine Berechtigung Tasks zu definieren, daher muss ich auf das VBS ausweichen. Und, lachst du noch immer? =)
Bitte warten ..
Mitglied: 60730
11.05.2009 um 11:06 Uhr
Servus,

entweder wie LSW schon schrieb zwei scripte - oder:

  • wenn Dienst aktiv stoppen - und weiter im Text
  • wenn DIenst gestoppt starten - und weiter im Text

PS: DIe Kombination von:
Ich habe ein VBS Script
Wie kriege ich das hin in VBS?

Wird Hier nicht gerne gesehen - wenn dann das Script - wobei es egal ist ob es sich um VBS/CMD oder Trallala² handelt
- nicht "dabei" ist.

Gruß
Bitte warten ..
Mitglied: Logan000
11.05.2009 um 11:43 Uhr
Moin Moin

Zitat von Fixu:
Grundsätzlich hast du Recht, es ist wie ein Task für den Tasklplaner.
Aber auf der Maschine habe ich keine Berechtigung Tasks zu definieren, daher muss ich auf das VBS ausweichen.
Und, lachst du noch immer? =)
Nun ich finde es zumindest erheiternd das du keine Task definieren darfst, aber Prozesse automatisch per Skript killen darfst.
Entweder du gibst deinen Account die Rechte oder du wendest dich an die Person die das darf.
Alles andere ist eher Klöterkram.

Gruß L.
Bitte warten ..
Mitglied: Fixu
11.05.2009 um 11:46 Uhr
Mit untem stehenden Skript wollte ich, dass bei erfolgreicher Übereinstimmung der Uhrzeit eine MsgBox kommt (diese würde nachher durch einen Sub Aufruf ersetzt). Jedoch funktioniert es nicht - ich nehme an es liegt an der Zeit Variable welche er nicht richtig interpretiert...

Option Explicit

Dim Zeit
Zeit="& time &"

Call Schleife

Sub Schleife
Do
Call Vergleich
loop
End Sub


Sub Vergleich
If Zeit = "11:41:30" Then
Info = MsgBox("Zeit ok", vbInformation, "Info")
else
end if
End Sub

Wscript.Quit
Bitte warten ..
Mitglied: 76109
11.05.2009 um 12:10 Uhr
Hallo Fixu,

also wenn schon, dann muss es so heissen:
01.
Zeit = "& time &"     Ergebnis = "& Time &" 
02.
Zeit = ""& time &""   Ergebnis = "Time"
Besser ist aber:
01.
If Time = CDate("11:41:30") Then
Gruß Dieter
Bitte warten ..
Mitglied: Fixu
11.05.2009 um 13:26 Uhr
Vielen Dank, habe das Ganze nun wie folgt gelöst:

Option Explicit

Dim objWMIService, objProcess, colProcess, WshShell
Dim strComputer, strProcessKill

Set WshShell = CreateObject("WScript.Shell")
strComputer = "."
strProcessKill = "'Datei.exe'"



Call Schleife

Sub Schleife
Do
wscript.sleep 1000
Call Vergleich
loop
End Sub

Sub Vergleich
If Time = CDate("02:00:00") Then
Call Kill
else If Time = CDate("03:00:00") Then
Call Start
End If End If
End Sub

Sub Kill
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")
Set colProcess = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = " & strProcessKill )
For Each objProcess in colProcess
objProcess.Terminate()
Next
End Sub

Sub Start
WshShell.Run "Hier kommt die .exe rein"
End Sub

Wscript.Quit
Bitte warten ..
Mitglied: 76109
11.05.2009 um 13:43 Uhr
Hallo Fixu,

so wird das nicht funktionieren. Durch Dein Sleep, kannst Du keinen erfolgreichen Vergleich dürchführen.

In jedem Fall sollte ein Zeitfenster geprüft werden z.B.:

01.
If Time >= CDate("02:00:00") And <=  CDate("02:01:00") Then

Gruß Dieter
Bitte warten ..
Mitglied: Fixu
11.05.2009 um 13:55 Uhr
Hatte es vorhin mit Calc.exe getestet, da ging es problemlos. Den Sleep habe ich nur eingebaut, damit er nicht x mal pro Sekunde die Schlaufe durchgeht (CPU Auslastung) und den Wert 1000 musste ich nehmen da er mir sonst die Anwendung mehr als 1x gestartet hat.
Bitte warten ..
Mitglied: 76109
11.05.2009 um 14:15 Uhr
Hallo Fixu,

stimmt, dass hatte ich jetzt nicht bedacht.

Aber dann könnte ma ja mit Time eine Variable auf True/False setzen und diese wiederum gegenseitig zurücksetzen oder zu einem späteren Zeitpunkt beide zurücksetzen. Nur so ein Gedanke.

Gruß Dieter

PS. Bleibt auch noch die Möglichkeit mit Zeitfenster das ganze Script zu überspringen.
Bitte warten ..
Mitglied: LotPings
11.05.2009 um 15:40 Uhr
IMO ist doch nur eine zusätzliche Abfrage nötig,

Im Zeitfenster Killen wenn läuft,
Ausserhalb starten wenn nicht läuft.

01.
Option Explicit 
02.
 
03.
Dim objWMIService, objProcess, colProcess, WshShell 
04.
Dim strComputer, strProcessKill 
05.
Dim Anfang, Ende 
06.
Set WshShell = CreateObject("WScript.Shell") 
07.
strComputer = "." 
08.
strProcessKill = "'Datei.exe'" 
09.
Anfang = CDate("02:00:00") 
10.
Ende = CDate("03:00:00") 
11.
 
12.
Call Schleife 
13.
 
14.
Sub Schleife 
15.
  Do 
16.
    wscript.sleep 1000 
17.
    Call Vergleich 
18.
  loop 
19.
End Sub 
20.
 
21.
Sub Vergleich 
22.
  If ((Time >= Anfang) And (Time <= Ende)) 
23.
    Call Kill 
24.
  else 
25.
    Call Start 
26.
  End If 
27.
End Sub 
28.
 
29.
Sub Kill 
30.
  Set objWMIService = GetObject("winmgmts:" _ 
31.
    & "{impersonationLevel=impersonate}!\\" _ 
32.
    & strComputer & "\root\cimv2") 
33.
  Set colProcess = objWMIService.ExecQuery _ 
34.
    ("Select * from Win32_Process Where Name = " & strProcessKill ) 
35.
  For Each objProcess in colProcess 
36.
    objProcess.Terminate() 
37.
  Next 
38.
End Sub 
39.
 
40.
Sub Start 
41.
   Set objWMIService = GetObject("winmgmts:" _ 
42.
    & "{impersonationLevel=impersonate}!\\" _ 
43.
    & strComputer & "\root\cimv2") 
44.
  Set colProcess = objWMIService.ExecQuery _ 
45.
    ("Select * from Win32_Process Where Name = " & strProcessKill ) 
46.
  For Each objProcess in colProcess 
47.
    Exit Sub   ' Wenn Proc schon läuft brauchen wir nicht starten 
48.
  Next 
49.
 WshShell.Run "Hier kommt die .exe rein" 
50.
End Sub 
51.
 
52.
Wscript.Quit
Gruß
LotPings

Edit Zeile 24 geändert; falsches if Then entsorgt
Bitte warten ..
Mitglied: 76109
11.05.2009 um 17:54 Uhr
Hallo LotPings,

also, irgendwie steh ich jetzt auf 'm Schlauch

Die Funktion Kill und Start soll doch jeweils nur einmal ausgeführt werden oder?

und was ist bitte in Zeile 24:
01.
else If Then
ist das auch ein Trick, den ich nocht nicht kenne.

Gruß Dieter
Bitte warten ..
Mitglied: LotPings
11.05.2009 um 18:19 Uhr
Nö, da hat sich mein Editor vergaloppiert und ich habs nicht gemerkt, soll nur ein else sein. Ich ändere das oben.

Da das Script nach der Änderung ja prüft ob der Process läuft, wird auch nur einmal ausserhalb des Zeitfensters gestartet.

Umgekeht wird innerhalb des Zeitfensters ja kein Process mehr gefunden der gestoppt werden könnte wenn er nicht läuft.

Gruß
LotPings
Bitte warten ..
Mitglied: 76109
11.05.2009 um 18:42 Uhr
Hallo LotPings,

aja, hab ich doch glatt übersehen, dass Du den unteren Teil auch geändert hast


Gruß
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
VB for Applications
VBS Script zum versenden mehrerer Verknüpfungen zu Dateien per Lotus Notes

Frage von Sentinel87 zum Thema VB for Applications ...

LAN, WAN, Wireless
gelöst Kein DHCP-Relay am Sub-Switch HP (20)

Frage von westberliner zum Thema LAN, WAN, Wireless ...

Windows 7
gelöst Batch-Skript oder VBS Skript zum Sichern von Office Vorlagen (2)

Frage von Ceejaay zum Thema Windows 7 ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...