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

Popup in vbs wird nicht angezeigt

Frage Entwicklung VB for Applications

Mitglied: kaktus67

kaktus67 (Level 1) - Jetzt verbinden

27.10.2007, aktualisiert 07.11.2007, 4945 Aufrufe, 5 Kommentare

Ich habe eine vbs-Datei, die ein Popup öffnet.

e25f0f0ab2185a05832f5f19d8ef1ee2-shutdown2 - Klicke auf das Bild, um es zu vergrößern

Dieses Script funktioniert einwandfrei, wenn ich die vbs-Datei händisch aufrufe oder in einem Geplanten Task unter meinem Benutzernamen ausführe.
Führe ich die Datei in einem Geplanten Task als NT AUTHORITY\SYSTEM aus, wird das Popup nicht angezeigt (vbs-Datei wird im Hintergrund ausgeführt).

Da die Datei am Server liegt und bei der Anmeldung eines Clients automatisch ein Task generiert wird, der auf die vbs-Datei am Server zugreift, muss ich diesen als NT AUTHORITY\SYSTEM ausführen, damit kein Kennwort benötigt wird. Gibt es eine Möglichkeit, dass das Popup dennoch angezeigt wird?

Dank und Gruß Karl
Mitglied: pacobay
05.11.2007 um 01:41 Uhr
Hallo Karl,
vermute es liegt an der Art deines Aufrufes im Task Stichwort (Wcript versus cscript)

möglicherweise auch an deinem Popupaufruf

Wenn Du einmal die entsprechenden Zeilen senden würdest könnte ich Dir u.U. genaueres sagen

ciao pacobay
Bitte warten ..
Mitglied: kaktus67
06.11.2007 um 00:35 Uhr
Hi & Dank!

Hier ein Auszug aus der vbs:

01.
'Aktuelle Uhrzeit ermitteln! 
02.
Dim Uhrzeit 
03.
Uhrzeit = Time 
04.
 
05.
'Uhrzeit festlegen, ab der die Meldung angezeigt werden soll! 
06.
Dim MeldungsUhrzeit 
07.
MeldungsUhrzeit = TimeValue("05:45:00 PM") 
08.
 
09.
'Ermitteln ob die felstgelegte Uhrzeit bereits vorbei ist und Meldung anzeigen! 
10.
If MeldungsUhrzeit > Uhrzeit Then 
11.
	Set wshShell = CreateObject("WScript.Shell") 
12.
	iRetVal = wshShell.Popup ("Es ist bereits nach " & MeldungsUhrzeit & " Uhr." & vbLF & _ 
13.
		"Dieses Gerät wird in 30 Sekunden automatisch heruntergefahren!" & vbLF & _ 
14.
		 vbLF & _ 
15.
		"Klicken Sie auf Abbrechen, wenn Sie weiterarbeiten möchten." & vbLF & _ 
16.
		"Bitte SCHALTEN Sie nach der Arbeit das Gerät VERLÄSSLICH AUS.",30,"Dieses Gerät wird heruntergefahren...", 49) 
17.
	Select Case iRetVal 
18.
		Case vbCancel 
19.
			WScript.Quit(0) 
20.
		Case vbOk 
21.
			'Wscript.Echo ("OK wurde geklickt!") 
22.
	End Select 
23.
Else 
24.
	'Wscript.Echo ("Es ist vor " & MeldungsUhrzeit & " Uhr!") 
25.
	WScript.Quit(0) 
26.
End If
Wie gesagt: Wenn die Datei auf dem lokalen PC liegt kein Problem. Nur wenn ich die Datei am Server liegen habe und den Geplanten Task mit NT AUTHORITY\SYSTEM ausführe.
Vielleicht gibt's ja noch ne andere Lösung und ich steh auf der Leitung ;-(
Bitte warten ..
Mitglied: pacobay
06.11.2007 um 11:28 Uhr
Hallo bei der ersten on the fly Betrachtung des Codes fällt mir das Folgendes auf:

1.
Leider hast du den Taskaufruf nicht gesendet
Aber rufst du dort mit wscript oder cscript auf ?
denn bei csribt würde geerell kein popup angezeit da die ausgabe in die doswelt geht
ich würde explizit mit wscript aufrufen

2.
dann noch eine allgemeine Ergänzung:
bezogen auf den Popupaufruf würde ich den modualen wert hinzufügen
also 49 + 4096
Modal bedeutet :All applications are suspended until the user responds
oder anders ausgedrückt:
das Popup ist vorne und bevor user etwas anderes machen kann muß er entweder reagieren sprich klicken oder er muß warten bis popup nach deinen 30 sekunden von selbst verschwindet

3.
So aus dem Bauch heraus könnte ich mir auch vorstellen, daß das script sehr wohl lokal ausgeführt wird aber durch anfängliche Bedingung (Zeitwertvergleich ergibt immer: nicht größer weil Variablen nicht wirklich vergleichbar sind) und folglich niemals etwas passiert und deshalb auch kein popup angezeigt wird.

Gegen diese Annahme spricht aber Deine Aussage: läuft wenn lokal ausgeführt

Trotzdem einfach weil mein Bauch so grummelt werde ich das heute nachmittag mal testen

Zu 3: weil Variablen nicht wirklich vergleichbar sind
Ist ein allgemeines Problem bei Zeitwertvergleichen sofern diese formal nicht richtig vergleichbar sind
weil es ein allgemeines problem gibt Time-variablen in unterschiedlichen Betriebssystemen bzw bei gleichen OS und unterschiedlichen festlegungen der Zeitanzeigenverwendung
Habe selber nur immer wieder stress gehabt mit Zeitwertvergleichen allerdings eher im batchbereich . Als ich mit vbs angefangen hatte ich mir schon angewöhnt die Werte immer zu vereinheitlichen und war so mehr auf der sicheren seite

Und ob
Uhrzeit = Time
und
MeldungsUhrzeit = TimeValue("05:45:00
PM")
wirklich vergleichbar sind weiß ich so direkt nicht


4.
bezogen auf das eigentliche Problem und daher nur am Rande bemerkt:

Else
'Wscript.Echo ("Es ist vor "
& MeldungsUhrzeit & "
Uhr!")

Dieser Bereich erscheint mir unnötig weil kann nicht eintreten
denn wenn die ganze if nur läuft wenn aktuelle Zeit > der festgelegten Zeit ist
dann kann es doch niemals vorher sein?
Unter der Annahme Vergleich funktioniert überhaupt vgl 3

5.

Wie gesagt: Wenn die Datei auf dem lokalen
PC liegt kein Problem. Nur wenn ich die Datei
am Server liegen habe und den Geplanten Task
mit NT AUTHORITY\SYSTEM ausführe.
Vielleicht gibt's ja noch ne andere
Lösung und ich steh auf der Leitung ;-(

auch aus dem Bauch heraus
kann mir irgendwie nicht vorstellen, dass es am NT AUTHORITY\SYSTEM liegt

aber frei nach dem Motto: kannst werden so alt wie ne Kuh lernst immer noch dazu
werde ich daher mal bei mir simulieren
aber irgendwann später
doch noch heute
versprochen

ciao pacobay
Bitte warten ..
Mitglied: kaktus67
06.11.2007 um 23:36 Uhr
Danke für die große Mühe!

Ui, da habe ich wohl was Wesentliches vergessen:
Der "Geplante Task" wird bei der Anmeldung am Domänencontroller per LogonScript erzeugt:

01.
rem ####autoshutdown.cmd########### 
02.
schtasks /delete /TN * /F 
03.
schtasks /create /TN AutoShutdown /TR "\\Server\netlogon\autoshutdown.vbs" /SC BEILEERLAUF /I 15 /ru System 
04.
rem ########################
Das funktioniert auch bestens. Kann ich im Taskmanager überprüfen.
Den System-Account muss ich mitschicken, damit der User kein DOS-Fenster bekommt, in dem er nochmals sein Kennwort zum Erzeugen des Tasks eingeben muss.

Der Aufruf funktioniert lokal wirklich.
Wenn ich es nach 17:45 Uhr probiere kommt das Fenster, sonst nicht (bzw. wenn ich vor 17:45 Uhr das > durch ein < Zeichen ersetze *g*

01.
Else 
02.
	'Wscript.Echo ("Es ist vor " & MeldungsUhrzeit & " Uhr!") 
03.
	WScript.Quit(0)
Habe ich nur zum Testen der "Uhrzeiterkennung" drinnen. Damits auf Wunsch vor der Zeit auch popupt.

Das einzige Problem was ich habe ist, dass ein Task mit NT AUTHORITY\SYSTEM im Hintergrund ausgeführt wird. (siehe auch: http://www.microsoft.com/technet/prodtechnol/windowsserver2003/de/libra ...
unter: "So planen Sie einen Task, der mit Systemberechtigungen ausgeführt wird").

Das gleiche Script habe ich an einigen Schulen ohne PopUp-Hinweis problemlos laufen. Jetzt habe ich einen Sonderfall an einer Schule, die ein PopUp benötig, um das Herunterfahren abzubrechen.

Vielleicht gibts ja auch eine ganz andere Möglichkeit.
- Beim Anmelden an der Domäne soll der PC beginnen, die Leerlaufzeit zu überprüfen
- Nach abgelaufener Leerlaufzeit soll ein Hinweis erscheinen, auf den man reagieren kann
- Bei keiner Aktivität soll der PC herunterfahren & ausschalten.

Jetzt hab ich das Ganze in VB.NET programmiert (EXE-Datei). Ich bin richtig stolz - läuft bestens - aber wieder nur lokal *g*
Am Server gibts jetzt Probleme mit den CAS-Framework-Rechten (zumindest, wenn ich sie am Client nicht händisch ändere - und das will ich nicht).
Waren das noch Zeiten, als man eine Datei einfach auf den Server kopieren mußte und ab ging's.
Aber... das ist eine andere Geschichte.

So jetzt werde ich mal den modularen Wert testen. Vielleicht findet sich ja noch was.
Bitte warten ..
Mitglied: pacobay
07.11.2007 um 09:03 Uhr
Hallo kaktus 67

also hatte gestern dein script nochmal getestet
und mußte leider fesstellen dass meine on the fly analyse nicht besonders gut war

die else macht natürlich sinn sorry

Das Einzige was in diesem Sinne bleibt ist
dass die if Bedingung doch nur anderersherum Sinn macht. oder?
If MeldungsUhrzeit > Uhrzeit Then
wohl
If MeldungsUhrzeit < Uhrzeit Then

Aber selbst das ist ja für das Problem erstmal total egal

Auch war mein Bauchgefühl nicht besonders zutreffend
Denn das mit der Uhrzeit klappt so wie du es gemacht hast
ohne probleme

der Aufruf eines popups mit +4096 (System modal) ist allg hilfreich löst es aber wahrscheinlich auch nicht

Und nachdem ich deine Antwort gelesen habe , frage ich mich ob die Zielerreichung nicht
einfacher via GPO zu lösen wäre

schau mal unter
http://www.mcseboard.de/windows-forum-allgemein-28/automatisches-abmeld ...

insbesondere den hinweis
http://support.microsoft.com/default.aspx?scid=kb;de;314999

habe mal vor längerem das ding verwendet
ist zu lange her um noch genaueres zu sagen

Aber ich meine mich zu erinnern, dass die zeitangabe in millisekunden oder so läuft
Ich erwähne dies nur weil ich damals angenommen hatte, es wären sekunden
Habe dann user statt nach einer stunde oder so nach wenigen minuten inaktivität rausgekegelt. Kam nicht ganz so gut

ciao pacobay
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Windows Server
IP-Einstellungen werden falsch angezeigt (5)

Frage von schlumpf90 zum Thema Windows Server ...

VB for Applications
gelöst Bestimmte Spalten aus CSV-Datei auslesen (VBS) (9)

Frage von Gurkenhobel zum Thema VB for Applications ...

Batch & Shell
Eventlog Druckjobs mit VBS auslesen (2)

Frage von joni2000de zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...