Top-Themen

Aktuelle Themen (A bis Z)

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, 5898 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 ..
Ähnliche Inhalte
Windows 8
Windows 8 Logon Script (VBS) wird nicht gestartet
Frage von caschoplWindows 85 Kommentare

Hallo, wir testen gerade Laptops mit Windows 8. Soweit läuft alles, allerdings stehe ich vor folgendem Problem: Wir starten ...

Windows 10
Vbs getobject auf per Task gestartete Anwendung
Frage von schauanWindows 104 Kommentare

Hallo zusammen, ich starte per Task nachts in abgemeldetem Zustand ein Script, welches Excel startet. Das Script startet dann ...

Windows 7
Subst alternative für Ordnerumleitung
gelöst Frage von 14634Windows 71 Kommentar

Hallo zusammen, ich habe einen Ordner auf C:, nehmen wir mal an es ist c:\Temp jetzt will ich einen ...

Visual Studio
Sub für Speicherung der Settings
Frage von ahstaxVisual Studio1 Kommentar

Tach, ist es irgendwie sinnvoll möglich, ein Sub für die Speicherung von Settings zu schreiben? Ich hab nachfolgendes probiert: ...

Neue Wissensbeiträge
Windows 10

Windows 10 Hello-Anmeldung per Foto ausgehebelt

Tipp von kgborn vor 2 MinutenWindows 10

Windows Hello ist eine Funktion, um sich per Fingerabdruck-, Gesichts- oder Iriserkennung bei Windows 10-Geräten anzumelden (siehe), setzt aber ...

Perl

Perl hat heute Geburtstag: 30 Jahre Perl: Lange Gesichter zum Geburtstag

Information von Penny.Cilin vor 7 StundenPerl2 Kommentare

Hallo, auch wenn es wenige wissen und noch weniger Leute es nutzen. Perl hat heute Geburtstag. 30 Jahre Perl ...

Sicherheit

Blackberry stirbt - Keine Updates für Priv mehr

Tipp von certifiedit.net vor 8 StundenSicherheit1 Kommentar

Blackberry wird zu einer 08/15 Firma und geht wohl mehr und mehr den Weg, den HTC schon ging. Von ...

Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 2 TagenWindows 1011 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Heiß diskutierte Inhalte
Batch & Shell
Kann man mit einer .txt Datei eine .bat Datei öffnen?
gelöst Frage von HelloWorldBatch & Shell22 Kommentare

Wie schon im Titel beschrieben würde ich gerne durch einfaches klicken auf eine Text oder Word Datei eine Batch ...

Netzwerkgrundlagen
Belibiges Teilnetz einer Subnetzmaske rausfinden?
gelöst Frage von CenuzeNetzwerkgrundlagen18 Kommentare

Wundervollen Gutentag, mittlerweile kann ich Subnetting so einigermaßen, aber ein Problem habe ich noch. Netzwerkadresse und Boradcast errechnen ist ...

Windows Server
SCCM 2016: PXE Boot des Clients schlägt fehl
Frage von gabeBUWindows Server14 Kommentare

Hallo Zusammen Ich habe eine Testumgebung erstellt um über SCCM 2016 einen virtuellen Client aufzusetzen. Folgende Maschinen habe ich ...

LAN, WAN, Wireless
WLAN Reichweite erhöhen mit neuer Antenne
gelöst Frage von gdconsultLAN, WAN, Wireless12 Kommentare

Hallo, ich besitze einen TL-WN722N USB-WLAN Dongle mit einer richtigen Antenne. Ich frage mich jetzt ob man die Reichweite ...