Feiertage.vbs

Alle Skripte sind Muster ohne jede Gewährleistung oder Funktionsgarantie. Für Schäden bin ich nicht verantwortlich. Achten Sie auf Zeilenumbrüche bei der Übernahme.

Achtung:
In meinen Testumgebungen und bei Kunden hat dieses Skript bislang problemlos funktioniert. Trotzdem kann es sein, dass das Script unerwartet abbricht. Dies liegt oft an Sonderzeichen oder Inhalten im AD, die ich noch nicht abgefangen habe.

VBScript und 64Bit !
Viele 32bit COM-Objekte lassen sich auf einem 64bit System nur instanzieren, wenn die 32bit Version von CSCRIPT/WSCRIPT genutzt wird, welcher unter C:\Windows\SysWOW64\cscript.exe liegt.

Anscheinend kann das Skript keine Feiertage in der Vergangenheit anlegen. Lassen Sie diese daher bis auf weiteres einfach aus der Quelldatei heraus. Den Fehler konnte ich bislang nicht eingrenzen (Zeitmangel)

Um auch bei Exchange 2007 mit einem Konto auf alle Postfächer zugreifen zu können, müssen Sie per Skript die Berechtigungen addieren. Siehe auch E2K7 Berechtigungen

Alle Jahre ist es das gleiche Problem. Die aktuellen Feiertage sind nicht im Kalender aufgeführt. Meist löst sich dadurch, dass Sie eine neue Version von Outlook installieren und damit die aktuellen Termine erhalten. Outlook legt die fehlenden Termine ja an. Aber was machen all die Anwender, die noch ein älteres Outlook nutzen ?.

Fakt ist, dass Sie mit Outlook eine Datei mit Terminen importieren können. Outlook nutzt dazu ein eigenes Format (HOL-Datei). Nur ist es natürlich nicht gerade elegant, jedem Anwender eine Mail mit dieser Anlage zum Import bereit zu stellen. Mit den passenden Berechtigungen ausgestattet und etwas Code können Sie aber auch auf dem Server zentral solche und andere Inhalte importieren. Mit etwas Geschick können Sie den Code anpassen um fast alles damit anzustellen. Aber immer vorausgesetzt, Sie haben die erforderlichen Berechtigungen (Siehe Exchange 2000 Berechtigungen)

Funktionsweise

Das Skript ist einfach und geradlinig geschrieben. Die Logik ist wie folgt:

[Deutschland] 2
Test8-12-05, 2005/12/08
Test9-12-05, 2005/12/09

Const CdoTmzGMT1 = 3
objSession.SetOption "TimeZone", CdoTmzGMT1

Download und Anpassung

Erste Schritt ist natürlich der Download des Scripts

feiertage.1.11.vbs
Nach dem Download als VBS-Datei speichern

Ehe Sie aber nun das Script aufrufen können, müssen Sie noch ein paar Dinge tun:

Achtung:
Das Skript wirkt sich auch alle Postfächer der Organisation aus. Es ist prinzipiell möglich, auch eine Textdatei oder LDAP-Filter für eine Selektion zu nutzen. Das ist im Script aber aktuell nicht umgesetzt.

Um daher z.B. die Funktion auf ein einzelnes Postfach zu beschränken, sollten Sie am besten die LDAP-Abfrage entsprechend anpassen, damit eben nur dieses Postfach "gefunden" wird. dazu eignet sich am besten das Feld "MailNickName" an folgender Stelle:

Testen !!!
Wenn Sie hier z.B. "mailnickname=testmailbox@firma.de" eingeben, wobei "testmailbox@firma.de" der Alias oder die SMTP-Adresse ist, dann wird der Import nur auf diese eine Mailbox angewendet.

Aufruf

Anscheinend verhält sich Outlook und CDO unterschiedlich. Bei meinen Tests auf dem Exchange Server selbst per CDO wurden die Termine nie als "AllDayEvent" angelegt. Leser der MSXFAQ haben aber berichtet, dass dies funktioniert, wenn der Aufruf auf einer Workstation mit Outlook 2003 erfolgt. (Nicht auf dem Exchange Server selbst)

Das Script wird mit CSCRIPT aufgerufen. Kommandozeilen werden nicht genutzt.

C:\>cscript feiertag.VBS

Während der Ausführung wird sowohl in der Konsole selbst als auch in einem eigenen Internet Explorer Fenster der aktuelle Status ausgegeben.

 

Den Internet Explorer dürfen Sie nicht beenden, da sonst auch das Script abbricht. Warten Sie daher bis das Script korrekt beendet wurde. Alle Aktionen werden zusätzlich in einer XML-Datei protokolliert, die mit dem passenden Stylesheet auch direkt im Internet Explorer zur Ausgabe geöffnet werden können. Warten Sie aber auch hier, bis das Script durchgelaufen ist, da ansonsten die XML-Datei nicht korrekt abgeschlossen ist.

In der XML-Datei stehen aber weitere Informationen, z.B. die einzelnen importierten und übersprungenen Termine, die aber über das Stylesheet ausgeblendet bleiben. Die Ausgaben auf der Konsole landen zudem in einer Protokolldatei im Programmverzeichnis.

Risiken und Probleme

Das Skript wurde von mir sowohl in einer Testumgebung als auch der ein oder anderen Produktionsumgebung in angepasster Form eingesetzt und hat wie gewünscht funktioniert. Dies ist aber keine Garantie. Probleme, die ich vermute:

Weitere Links

Tags:Feiertag Code Tool VBScript