ferengie
Goto Top

Login Script für Geburtstage

Hallo Gemeinde,

ich benötige Hilfe bei der Erstellung eines Login Scripts. Diese Script soll auslesen, welches Datum ist und wenn es ein bestimmtes Datum ist (z.B.: 30. November), soll der IE eine bestimmte html Datei öffnen.

Zur Erklärung:
Wir haben vor kurzem den Wechsel von Novell NetWare auf Microsoft Server vollzogen. Bei Novell hatte ich so ein Login Script erstellt. In diesem Script war jeder Geburtstag hinterlegt.
Wenn also Herr XY Geburtstag hatte, wurde nach der Anmeldung bei allen Usern (und auch bei Herrn XY) automatisch eine vorbereitete HTML-Geburtstags-Seite im Internet-Explorer geöffnet.

Nun weiß ich aber die Befehle nicht, die man bei einem Login Script unter Windows benutzt.

Könnt ihr mir helfen, da hier jetzt alle diese Erinnerung vermissen.

Hier mal das Script unter Novell:

IF DAY="06" AND MONTH="10" THEN
WRITE "Heute ist Geburtstag von Herr XY!"
@ C:\Programme\Internet Explorer\iexplore.exe R:\Bilderarchiv\Internet\Birthday\Herr_XY.html
END

Unser jetziges Login Script ist ein VBS Script.
Kommentar vom Moderator Biber am Nov 11, 2010 um 14:54:42 Uhr
[Bereits gelösten] Beitrag verschoben von "Windows Server" nach "Bätches From Hell".

Content-Key: 154341

Url: https://administrator.de/contentid/154341

Printed on: April 25, 2024 at 08:04 o'clock

Member: cewiethemaster
cewiethemaster Nov 04, 2010 at 11:29:54 (UTC)
Goto Top
Hallo das ganze liese sich als Batch_Datei einbinden.

der Code wäre

@ echo of
if DATE == 01.02.1990 goto :day1
if DATE == 02.02.1990 goto :day2
if DATE == 03.02.1990 goto :day3
if DATE == 04.02.1990 goto :day4
goto :exit

:day1
echo heute hat Herr XY geburtstag
start C:\Programme\Internet Explorer\iexplore.exe R:\Bilderarchiv\Internet\Birthday\Herr_XY.html
goto :exit

:day2
echo heute hat Herr XYZ geburtstag
start C:\Programme\Internet Explorer\iexplore.exe R:\Bilderarchiv\Internet\Birthday\Herr_XYZ.html
goto :exit

:exit
exit

Bei
if DATE == 04.02.1990 goto :day4
musst du darunter immer ergänzen (:day5, :Day6 usw)

bei
:day2
echo heute hat Herr XYZ geburtstag
start C:\Programme\Internet Explorer\iexplore.exe R:\Bilderarchiv\Internet\Birthday\Herr_XYZ.html
goto :exit

musst du jeweils das :dayXX und das Start anpassen
(richtige Nummer zum Datum und HTML-File)

Das Script speicherst du als LOGON.BAT ab, und legst du auf dem Server ab.
Dann noch ne Verknüpfung in den Autostart-Ordner bei den Clients und e-voila
Mitglied: 60730
60730 Nov 04, 2010 at 11:31:05 (UTC)
Goto Top
Moin,

wenn du von Novell kommst - schau dir mal Kixtart an.
Das ist in meinen Augen zum Thema Loginscript schneller, schöner als VBS.

btw: dein Script kann so nicht funktionieren - da fehlen zwei Gänse incl. deren Füßchen face-wink

if ("@mdayno.@month"="4.November")  
 ? "wir begrüßen Otto yxz zu seinem persönlichen Wiegenfest"  
SHELL "%programfiles%\Internet Explorer\iexplore.exe" "R:\Bilderarchiv\Internet\Birthday\Herr_XY.html"  
endif

Natürlich muß das dann so spät laufen, dass R bereits gemappt ist

In cmd sähe das so aus:

if "%date:~-10,2%.%date:~-7,2%"=="04.11" (  
         echo "Heute ist Geburtstag von Herrn XY!"  
         call "%programfiles%\Internet Explorer\iexplore.exe" "R:\Bilderarchiv\Internet\Birthday\Herr_XY.html"  
)

Gruß

edit
@ cewie face-wink auch du hast seine fehlenden Gänse übernommen face-wink
@ beide: Anrede bei den herrlichern Herren immer Herrn
;-] mädelz - schaut mal in das kleine Loch zwischen Indernet und Ex...
Member: gemini
gemini Nov 04, 2010 at 11:32:32 (UTC)
Goto Top
Hallo Ferengie,
da wir sowas nicht einsetzen, habe ich nur mal schnell was zusammengezimmert (und natürlich nicht getestet).

Da ihr anscheinend die Daten im Script pflegt sollte es so funktionieren:
Was es tut: Wenn Tag und Monat von heute sind, öffnet sich ein Popup, das sich nach 10 Sekunden selbstständig wieder schließt, gleichzeitig wird die entspr. HTML-Datei im IE geöffnet.
If DatePart("d", Date) = "6" And DatePart("m", Date) = "10" Then  
	Set WshShell = WScript.CreateObject("WScript.Shell")  
	WshShell.Popup(Herzlichen Glückwunsch zum Geburtstag Herr XY", 10, "Geburtstag von Herrn XY", 1)  
	WshShell.Run(C:\Programme\Internet Explorer\iexplore.exe R:\Bilderarchiv\Internet\Birthday\Herr_XY.html)
End If

Ein Vorschlag:
Die Geburtstage im ActiveDirectory pflegen (mangels Birthday-Feld könnte man dafür das extensionAttribute1 verwenden) hätte den Vorteil, dass alle Benutzer nur an einem Ort gepflegt werden müssen und mit lediglich einem Scriptblock abgedeckt sind.
In dem Birthday-Verzeichnis müssten dann trotzdem HTML-Dateien mit den Anmeldenamen des Benutzers liegen. Sebstverständlich könnten die HTML-Dateien auch zur Laufzeit erzeugt werden.
Was es tut: Wenn das extensionAttribute1 NICHT leer ist und der zwichen heute und dem extensionAttribute1 0 Tage Unterschied sind wird der Pfad zur HTML-Datei mit dem Anmeldenamen des Benutzers zusammengestellt und maximiert im IE geöffnet.
Set objSysInfo = CreateObject("ADSystemInfo")  
Set objUser = GetObject("LDAP://" & objSysInfo.UserName)  
Set WshShell = WScript.CreateObject("WScript.Shell")  

If Not objUser.extensionAttribute1 = "" Then  
	If DateDiff("d", Date, objUser.extensionAttribute1) = 0 Then  
		strPath = "R:\Bilderarchiv\Internet\Birthday\" & objUser.sAMAccountName & ".html"  
		WshShell.Run(C:\Programme\Internet Explorer\iexplore.exe strPath, 3, FALSE)
	End If
End If

Ist wie schon gesagt ungetestet, ohne Fehlerbehandlung und daher als Skizze zu verstehen.

Gruß,
gemini
Member: MrTrebron
MrTrebron Nov 04, 2010 at 11:36:53 (UTC)
Goto Top
Hi Ferengie

If Month(Date) = 11 AND Day(Date) = 4 Then
MsgBox("Heute hat Herr xyz Geburtstag!")  
Set WshShell = WScript.CreateObject("WScript.Shell")  
WshShell.Run "iexplore.exe C:\Temp\happy_birthday_rocker_xxl.jpg"  
End If

Gruß
Norbert
Member: Ferengie
Ferengie Nov 04, 2010 at 11:46:17 (UTC)
Goto Top
Vielen, Vielen Dank.

Mit so vielen Lösungsvorschlägen habe ich nicht gerechnet.

Ich habe mir überlegt, ob ich vielleicht eine "Birtday.ini" anlege und in diese jeden Geburtstag eintrage.
Zum pflegen der Daten übersichtlicher.

Aber nochmals vielen, vielen Dank.

Super Board!
Mitglied: 60730
60730 Nov 04, 2010 at 12:15:47 (UTC)
Goto Top
Salü,

Ich habe mir überlegt, ob ich vielleicht eine "Birtday.ini" anlege und in diese jeden Geburtstag eintrage.

gute Idee...

for /f "tokens=1-3 delims=," %%a in ('findstr "%date:~-10,2%.%date:~-7,2%" "laufwerk\pfad\birthday.ini"') do (  
	echo Heute hat %%b Wiegenfest
	call "%programfiles%\Internet Explorer\iexplore.exe" "%%c"  
)

und die burzeltag.ini sähe so aus:
04.11,Franz.Branntwein,R:\Bilderarchiv\Internet\Birthday\Herr_Branntwein.html

Gruß
und denk dran - die meisten haben deinen Aufruf des IE nur übernommen, ohne "" funktioniert der aber nicht.

Gruß
Member: Ferengie
Ferengie Nov 11, 2010 at 11:00:24 (UTC)
Goto Top
Hallo - wieder ich.

Habe jetzt folgende Lösung direkt im Login Script umgesetzt:
If Month(Date) = 10 AND Day(Date) = 6 Then
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "iexplore.exe R:\Ordner\Herr_X.Y.html"
End If


If Month(Date) = 10 AND Day(Date) = 6 Then
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "iexplore.exe R:\Ordner\Frau_X.Y.html"
End If

u.s.w.

Das funktioniert wunderbar und ich möchte mich nochmal bedanken.
Heute war auch der erste Probelauf, der ohne Probleme verlief.

Nun kam auch gleich die nächste Frage von einigen Usern:
"Was ist eigentlich, wenn jemand am Samstag oder Sonntag Geburtstag hat? Kann man das nicht so einstellen, dass am nächsten Montag die Website erscheint?"

Das überfordert mich jetzt ein wenig, da ich mit VBS eigentlich noch nicht viel Erfahrung habe.
Habt ihr vielleicht eine Lösung? Die Leute sind nie mit etwas zufrieden.

Vielen Dank!
Mitglied: 60730
60730 Nov 11, 2010 at 11:45:10 (UTC)
Goto Top
Moin,

naja das wird aber in meinen Augen kompliziert..

Sinngemäß müßte das so laufen:
  • Wenn Heute Montag ist, wer könnte heute vor einem oder zwei Tagen Geburtstag gehabt haben.

Und da sehe ich dein Konzept, wo jeder Geburtstag ein Block im Script ist am Ende (meines Lateins)

Ich würde dann wohl eher mit einem festen Script arbeiten wollen und die "Namen","Geburtstage","Webseiten" wären in einer eigenen csv Datei.
edit, das hab ich ja schon früher gedacht & geschrieben

Das nur mal vorab. evtl. fällt einem ja noch was anderes oder mir eine mögliche Stolperfalle ein....

back-to-topAber dazu solltest du diesen Beitrag dahin verschieben, wo er hingehört - in Entwicklung Batches 4 Hell


Obwohl, der Pistazienman war ja schon da und hat den Haken drangeklebt.....

Gruß
Member: Redmen
Redmen Feb 09, 2011 at 09:17:26 (UTC)
Goto Top
Hallo Leute, ich bin neu hier und hab eine Frage betr. Login mit Geburtstag.

Wir haben hier ein Script, dass aus einer Datei der Name, und Geburtsdatum aus dem File "birthday.flag" ausliesst:

Name Vorname,2011/06/14
Name Vorname,2011/09/21
Name Vorname,2011/03/31
usw...


Nun das Script:

;----------------------------------------------------------------------------------------
; Birthday Routine
;----------------------------------------------------------------------------------------
:bday
  At (6,8) "Check for Birthday ..."  

;Variablen
$to=' -to itreport@@firma.ch,hrm2@@firma.ch'  
$f=' -f itreport@@firma.ch'  
$msg='"Geburtstag Batch - Erfolgreich ausgeführt bei @FULLNAME !"'  
$msg2='"Ausgeführt auf: @wksta"'  
$server=' -server blabla06'  

;Name auslesen
$vorname=split(join(split(@FULLNAME,''),''),' ')[1]  
$nachname=split(join(split(@FULLNAME,''),''),' ')  
$jahr=split(join(split(@Date,''),''),'/')  
$bdayflag = "%USERPROFILE%\flags\birthday.flag"  

;Such String generieren
$create_bday = $vorname," ", $nachname,",",@DATE  
$bday = JOIN($create_bday,"")  

SHELL 'C:\WINDOWS\System32\CMD.EXE /C find "$bday" \\blabla\spezielletage$\bday\bday.txt > nul'  
If not @ERROR 
Goto bday_start
Else
Goto bday_fehler

:bday_start
	If exist ("$bdayflag")= 0  
	Goto Powerpoint	
	Else 
		open(2,"$bdayflag",0)  
		$gespeichertesJahr = ReadLine(2)
		Close(2)
	EndIf

		If $gespeichertesJahr <> $jahr
			Del $bdayflag
:PowerPoint
			SHELL '"%programfiles%\Microsoft Office\Office14\POWERPNT.EXE" /S "O:\Wichtige Infos_Dokumentation_Präsentation\Betrieb\Frei- und Geburtstage\Aktuell\bday\bday.ppt"'  
			If exist ("$bdayflag")= 0  
			open(2,"$bdayflag",5)  
			$x = WriteLine(2,$jahr)
			Close(2)
			shell "%logonserver%\NETLOGON\bday\blat\blat - $to $f -subject $msg -body $msg2 $server -q"  
At (6,65) "[Done]"  

Endif
Return

:bday_fehler
At (6,52) "[no birthday today]"  
Return

Also, wie ihr sieht, löst es eine Powerpoint Funktion aus beim Login vom betr. Geburtstagskind. Das funktioniert auch. Jetzt sollte das Script innert 7 Tage das Script weiterhin auslösen (@Date +7Days oder ähnlich) wenn z.b. der User sich erst 2 Tage nach seinem Geburtsag anmeldet.
Habt ihr mir da eine Lösung?

Danke im Vorraus!
Mitglied: 60730
60730 Feb 09, 2011 at 09:47:02 (UTC)
Goto Top
moin und willkommen,

mach dir selber eine Freude und stelle dir Frage in einem neuen eigenen Fred - am liebsten unter Kixtart und wenn du magst, dann editierst du deine Frage hier sinngemäß in - eine andere Baustelle [link linkbezeichnung].

Das Hier finden nur diejenigen, die hier schon mal waren oder durch eine Suchmaschine hierhin geleitet wurden.
Außerdem ist der Pistaziengrüne Haken schon drangebabscht.

Gruß & vielen dank für die code tags