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

Feiertage in Outlook falsch

Frage Microsoft Outlook & Mail

Mitglied: melmax

melmax (Level 1) - Jetzt verbinden

20.11.2014, aktualisiert 24.11.2014, 9360 Aufrufe, 19 Kommentare, 3 Danke

Hallo zusammen,

ich bin gerade von einem User darauf aufmerksam gemacht worden dass die Pfingstfeiertage 2015 in Outlook falsch sind.
Nach einigen Google Abfragen weiß ich zwar wie ich das Problem lösen kann (mit Feiertage löschen und .hol File tauschen...), irgendwie macht das aber bei 900 Clients keinen Spass.
Da steiken auch meine Azubis

Hat einer von euch hier schon eine Enterprise-taugliche Lösung oder hab ich mal wieder ein MS Hotfix übersehen?

Vielen Dank für euren Input,

Melmax
Mitglied: colinardo
LÖSUNG 20.11.2014, aktualisiert 09.06.2017
Hallo Melmax,
ließe sich mit einem Powershell-Script machen, hier mal schnell skizziert:
(Das korrigierte HOL-File kannst du ja auf ein Netzlaufwerk legen / Pfad Zeile 11)
01.
function Remove-OutlookHolidays(){ 
02.
    $objOL = New-Object -ComObject "Outlook.Application" 
03.
    $calendar = $objOL.GetNamespace("MAPI").GetDefaultFolder(9) 
04.
    $holidays = $calendar.Items.Restrict("@SQL=""http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046}/Keywords"" = 'Feiertag'") 
05.
    while($holidays.Count -gt 0){ 
06.
        $holidays.Remove(1) 
07.
08.
09.
 
10.
function Add-OutlookHolidays(){ 
11.
    $holFile = "\\Server\Share\OUTLOOK_FIX.HOL" 
12.
    $objOL = New-Object -ComObject "Outlook.Application" 
13.
    $calendar = $objOL.GetNamespace("MAPI").GetDefaultFolder(9) 
14.
    $holidays = [regex]::Match((gc $holfile -raw),'(?ism)^\[Deutschland\].*?$(.*?)(^\[|\Z)').Groups[1].Value.Trim().Split("`n") | ?{$_ -match ','} 
15.
    $holidays | %{ 
16.
        $line = $_.Split(",") 
17.
        $app = $calendar.Items.Add(1) 
18.
        $app.AllDayEvent = $true  
19.
        $app.Start = get-date $line[1] 
20.
        $app.Subject = $line[0] 
21.
        $app.ReminderSet = $false 
22.
        $app.Categories = "Feiertag" 
23.
        $app.Location = "Deutschland" 
24.
        $app.Save() 
25.
26.
27.
write-host "Entferne Outlook-Feiertage ..." 
28.
Remove-OutlookHolidays 
29.
write-host "Füge Outlook-Feiertage hinzu...Bitte warten..." 
30.
Add-OutlookHolidays
Grüße Uwe
Bitte warten ..
Mitglied: melmax
24.11.2014 um 13:43 Uhr
Hallo Uwe,

vielen Dank, Script wird bereits getestet.

Grüße Melmax
Bitte warten ..
Mitglied: FrauMue
26.01.2015 um 17:38 Uhr
Hallo Uwe,

vielen Dank. Ich beschäftige mich jetzt zum ersten Mal mit PowerShell. Mir ist nicht klar was z.B. in Zeile 4 gemacht wird. In die Variable $holidays schreibst du die Feiertage aus dem Kalender...? Was macht @sql und der link?

Würde gerne nur die beiden falschen tage ersetzten, wenn sie denn existieren - komme aber mit meinen beschränkten Kenntnissen nicht weiter.

Danke im Voraus!

Grüße
Bitte warten ..
Mitglied: colinardo
26.01.2015, aktualisiert um 17:54 Uhr
Hallo FrauMue,
Zitat von FrauMue:
vielen Dank. Ich beschäftige mich jetzt zum ersten Mal mit PowerShell. Mir ist nicht klar was z.B. in Zeile 4 gemacht wird.
In die Variable $holidays schreibst du die Feiertage aus dem Kalender...?
Ja damit werden auf effektive Weise alle Feiertage gefiltert um nicht alle Termine mit einer Schleife durchitterieren zu müssen.
Siehe: Items.Restrict Method (Outlook)
Was macht @sql und der link?
Das sind PropTags die intern von Outlook Verwendung finden. Diese kann man sich z.B. mit MFCMAPI anzeigen lassen.

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

Würde gerne nur die beiden falschen tage ersetzten, wenn sie denn existieren - komme aber mit meinen beschränkten
Kenntnissen nicht weiter.
Das Script entfernt alle Feiertage. Dann holst du dir das korrigierte HOL-File mit den korrigierten Feiertagen und lässt es mit der Import-Funktion wieder alle importieren. Feddich.

Grüße Uwe

/Eine Einführung in Powershell können wir hier leider nicht jedem geben...siehe dazu://

Powershell Grundlagen- und Praxisvermittlung:
Bitte warten ..
Mitglied: colinardo
26.01.2015, aktualisiert 11.06.2017
Zitat von FrauMue:
Würde gerne nur die beiden falschen tage ersetzten, wenn sie denn existieren - komme aber mit meinen beschränkten
Kenntnissen nicht weiter.
Sorry hatte ich glatt überlesen, für den Fall reicht folgendes Script:
Korrigiert Pfingstfeiertage 2015 (Pfingstsonntag und Pfingstmontag) im Standardkalender von Outlook.
  • Pfingstsonntag vom 28.05.2015 auf 24.05.2015
  • Pfingstmontag vom 29.05.2015 auf 25.05.2015
01.
$objOL = New-Object -ComObject "Outlook.Application" 
02.
$calendar = $objOL.GetNamespace("MAPI").GetDefaultFolder(9) 
03.
$calendar.Items.Restrict("[Subject] = 'Pfingstsonntag' AND [Start] = '" + (get-date '28.05.2015' -Format 'g') + "'") | %{$_.Start = get-date '24.05.2015';$_.Save()} 
04.
$calendar.Items.Restrict("[Subject] = 'Pfingstmontag' AND [Start] = '" + (get-date '29.05.2015' -Format 'g') + "'") | %{$_.Start = get-date '25.05.2015'; $_.Save()}
Über eine kleine Spende freue ich mich immer.


Grüße Uwe
Bitte warten ..
Mitglied: HarryK
19.03.2015 um 14:25 Uhr
Hallo Uwe,

vorab, das Powershell Script funktioniert einwandfrei.

Das Script wird bei uns per GPO beim Logon eines Users ausgeführt.

Auf Windows 7 + Clients kein Problem, gibt es jedoch für Windows XP Clients auch eine Lösung?

Danke!
Bitte warten ..
Mitglied: colinardo
19.03.2015, aktualisiert um 14:32 Uhr
Hallo HarryK,
das läßt sich auch einfach als VBS umschreiben, oder du installierst die PS 2.0 auf den XP Rechnern.

Grüße Uwe
Bitte warten ..
Mitglied: HarryK
19.03.2015 um 14:41 Uhr
Ja, wenn man Ahnung von VB hat, ist es bestimmt einfach . Installation von PS auf den Rechnern will ich eig. vermeiden.

Ich schau mir trotzdem einmal die VBS Variante an.
Bitte warten ..
Mitglied: colinardo
19.03.2015, aktualisiert um 15:28 Uhr
So hier noch das Script als VBS umgeschrieben:
01.
Set objOL = CreateObject("Outlook.Application") 
02.
Set cal = objOL.GetNamespace("MAPI").GetDefaultFolder(9) 
03.
Set items = cal.items.Restrict("[Subject] = 'Pfingstsonntag' AND [Start] = '" & FormatDateTime("28.05.2015", vbShortDate) & " 00:00'") 
04.
Set itm = items.GetFirst() 
05.
If Not itm Is Nothing Then 
06.
    itm.start = CDate("24.05.2015") 
07.
    itm.Save 
08.
End If 
09.
Set items = cal.items.Restrict("[Subject] = 'Pfingstmontag' AND [Start] = '" & FormatDateTime("29.05.2015", vbShortDate) & " 00:00'") 
10.
Set itm = items.GetFirst() 
11.
If Not itm Is Nothing Then 
12.
    itm.start = CDate("25.05.2015") 
13.
    itm.Save 
14.
End If
Ist ja Ende Mai sowieso obsolet

Grüße Uwe

Installation von PS auf den Rechnern will ich eig. vermeiden.
Lieber die Kisten migrieren ... ist schon längst überfällig...
Bitte warten ..
Mitglied: HarryK
19.03.2015 um 15:51 Uhr
Top Uwe, hat super funktioniert!
Bitte warten ..
Mitglied: Rene12345
08.06.2017, aktualisiert um 12:44 Uhr
Hallo Uwe,
gibt es dazu ggf. schon einen neuen Stand?
Wollte das Skript gerade ausführen und erhalte folgende Fehlermeldungen:

01.
Entferne Outlook-Feiertage ... 
02.
 
03.
Array-Index außerhalb des zulässigen Bereichs. 
04.
In C:\Users\meinnutzername\Desktop\Neuer Ordner (5)\Feiertage.ps1:6 Zeichen:9 
05.
+         $holidays.Remove(1) 
06.
+         ~~~~~~~~~~~~~~~~~~~ 
07.
    + CategoryInfo          : OperationStopped: (:) [], COMException 
08.
    + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException 
09.
 
10.
Füge Outlook-Feiertage hinzu...Bitte warten... 
11.
 
12.
Get-Date : Der Parameter "Date" kann nicht an das Ziel gebunden werden. Ausnahme beim Festlegen von  
13.
"Date": "NULL kann nicht in den Typ "System.DateTime" konvertiert werden." 
14.
In C:\Users\meinnutzername\Desktop\Neuer Ordner (5)\Feiertage.ps1:19 Zeichen:31 
15.
+         $app.Start = get-date $line[1] 
16.
+                               ~~~~~~~~ 
17.
    + CategoryInfo          : WriteError: (:) [Get-Date], ParameterBindingException 
18.
    + FullyQualifiedErrorId : ParameterBindingFailed,Microsoft.PowerShell.Commands.GetDateCommand
Bitte warten ..
Mitglied: colinardo
08.06.2017, aktualisiert um 13:12 Uhr
Das eventuell nur an einer leeren Zeile im HOL File, habe es oben dahingehend korrigiert.

Grüße Uwe
Bitte warten ..
Mitglied: Rene12345
09.06.2017 um 10:50 Uhr
Hallo Uwe,
das Problem ist damit leider noch nicht behoben.

Die outlook.hol liegt einfach auf C, der Pfad dementsprechend C:\outlook.hol und ist auch gefüllt;

01.
[Deutschland] 11 
02.
Reformationstag, 2017/10/31 
03.
1. Weihnachtstag, 2017/12/25 
04.
1. Weihnachtstag, 2018/12/25 
05.
und so weiter
Das Skript legt nun keinen Feiertag mehr an. (Vorher nur einen mit dem Namen Deutschland) Lege ich einen Feiertag mit der Kategorie Feiertag an und führe das Skript aus, löscht er diesen, der Fehler von oben taucht jedoch wieder auf. :s

Hast du da ggf. freundlicherweise noch eine Lösung bereit?

Grüße
Bitte warten ..
Mitglied: colinardo
09.06.2017, aktualisiert um 11:09 Uhr
Sorry läuft hier überall einwandfrei. Du musst das original HOL File nehmen .... Nicht nur die Deutschland Section rauskopieren, wie du oben zeigst, denn das obige Regex ist darauf ausgelegt. Willst du es anders muss es angepasst werden.

p.s. In den aktuellen Jahren gibt es keine falschen Feiertage mehr. Das war nur für 2015 der Fall.
Bitte warten ..
Mitglied: Rene12345
09.06.2017 um 11:14 Uhr
Danke, mit der originalen funktioniert alles einwandfrei.
Vielen Dank für die Hilfe.

Hintergrund der Termine ist übrigens, dass gewünscht ist alle freien Tage zu veröffentlichen. So haben wir bspw. am 16.06. nächste Woche auch frei.

Grüße
Bitte warten ..
Mitglied: colinardo
09.06.2017, aktualisiert um 11:17 Uhr
Zur Info: Habe die Regex noch so angepasst das du den Deutschlandabschnitt auch alleine in das File kopieren kannst.
Hintergrund der Termine ist übrigens, dass gewünscht ist alle freien Tage zu veröffentlichen. So haben wir bspw. am 16.06. nächste Woche auch frei.
Na dann, alles klar, zweckentfremdet quasi .

Grüße Uwe
Bitte warten ..
Mitglied: Rene12345
13.06.2017 um 15:12 Uhr
Hallo Uwe,
auch wenn ich dich ungerne erneut nerven möchte, habe ich zur Zeit folgendes Problem (auf dem Client):

Nutze ich nur den Befehl zum löschen, erscheint keine Fehlermeldung. Wenn ich vorher manuell einen Feiertag mit der Kategorie "Feiertag" anlege, wird dieser auch gelöscht.

Lasse ich das Skript vollständig, erscheinen folgende Fehlermeldungen:

01.
Get-Content : Es wurde kein Parameter gefunden, der dem Parameternamen "raw" entspricht. 
02.
Bei C:\Users\Mueller\Desktop\Mueller\Feiertage.ps1:14 Zeichen:49 
03.
+     $holidays = [regex]::Match((gc $holfile -raw <<<< ),'(?ism)^\[Deutschland\].*?$(.*?)(^\[|\Z)').Groups[1].Value.Trim().Split("`n") | ?{$_ -match ','} 
04.
    + CategoryInfo          : InvalidArgument: (:) [Get-Content], ParameterBindingException 
05.
    + FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.GetContentCommand 
06.
  
07.
Sie können keine Methode für einen Ausdruck mit dem Wert NULL aufrufen. 
08.
Bei C:\Users\Mueller\Desktop\Mueller\Feiertage.ps1:16 Zeichen:25 
09.
+         $line = $_.Split <<<< (",") 
10.
    + CategoryInfo          : InvalidOperation: (Split:String) [], RuntimeException 
11.
    + FullyQualifiedErrorId : InvokeMethodOnNull 
12.
  
13.
In einem NULL-Array kann kein Index erstellt werden. 
14.
Bei C:\Users\Mueller\Desktop\Mueller\Feiertage.ps119 Zeichen:37 
15.
+         $app.Start = get-date $line[ <<<< 1] 
16.
    + CategoryInfo          : InvalidOperation: (1:Int32) [], RuntimeException 
17.
    + FullyQualifiedErrorId : NullArray 
18.
  
19.
In einem NULL-Array kann kein Index erstellt werden. 
20.
Bei C:\Users\Mueller\Desktop\Mueller\Feiertage.ps1:20 Zeichen:30 
21.
+         $app.Subject = $line[ <<<< 0] 
22.
    + CategoryInfo          : InvalidOperation: (0:Int32) [], RuntimeException 
23.
    + FullyQualifiedErrorId : NullArray
Es wird zusätzlich ein Feiertag namens "Deutschland" angelegt.
Meine Outlook.hol Datei sieht wie folgt aus:

01.
[Deutschland] 276 
02.
Reformationstag, 2017/10/31 
03.
1. Weihnachtstag, 2017/12/25 
04.
1. Weihnachtstag, 2018/12/25 
05.
1. Weihnachtstag, 2019/12/25 
06.
1. Weihnachtstag, 2020/12/25 
07.
1. Weihnachtstag, 2021/12/25 
08.
1. Weihnachtstag, 2022/12/25 
09.
1. Weihnachtstag, 2023/12/25 
10.
//und so weiter bis// 
11.
Tag d. Dt. Einheit, 2022/10/03 
12.
Tag d. Dt. Einheit, 2023/10/03 
13.
Tag d. Dt. Einheit, 2024/10/03 
14.
Tag d. Dt. Einheit, 2025/10/03
Dein Skript sieht wie folgt aus:
01.
function Remove-OutlookHolidays(){ 
02.
    $objOL = New-Object -ComObject "Outlook.Application" 
03.
    $calendar = $objOL.GetNamespace("MAPI").GetDefaultFolder(9) 
04.
    $holidays = $calendar.Items.Restrict("@SQL=""http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046}/Keywords"" = 'Feiertag'") 
05.
    while($holidays.Count -gt 0){ 
06.
        $holidays.Remove(1) 
07.
08.
09.
 
10.
function Add-OutlookHolidays(){ 
11.
    $holFile = "C:\Users\Mueller\Desktop\Mueller\outlook.hol" 
12.
    $objOL = New-Object -ComObject "Outlook.Application" 
13.
    $calendar = $objOL.GetNamespace("MAPI").GetDefaultFolder(9) 
14.
    $holidays = [regex]::Match((gc $holfile -raw),'(?ism)^\[Deutschland\].*?$(.*?)(^\[|\Z)').Groups[1].Value.Trim().Split("`n") | ?{$_ -match ','} 
15.
    $holidays | %{ 
16.
        $line = $_.Split(",") 
17.
        $app = $calendar.Items.Add(1) 
18.
        $app.AllDayEvent = $true  
19.
        $app.Start = get-date $line[1] 
20.
        $app.Subject = $line[0] 
21.
        $app.ReminderSet = $false 
22.
        $app.Categories = "Feiertag" 
23.
        $app.Location = "Deutschland" 
24.
        $app.Save() 
25.
26.
27.
 
28.
 
29.
write-host "Entferne Outlook-Feiertage ..." 
30.
Remove-OutlookHolidays 
31.
write-host "Füge Outlook-Feiertage hinzu...Bitte warten..." 
32.
Add-OutlookHolidays
Die Outlook.hol liegt natürlich auch in dem Ordner "Mueller".

Vielen Dank für deine kommende Antwort und Grüße
René
Bitte warten ..
Mitglied: colinardo
13.06.2017, aktualisiert um 16:55 Uhr
Get-Content : Es wurde kein Parameter gefunden, der dem Parameternamen "raw" entspricht.
Du verwendest nicht mindestens PS 3.0 , das ist dein Fehler! Denn dort gibt es den Parameter -raw noch nicht
Wenn du tatsächlich noch die PS 2.0 verwendest, schreibst du das gc $holfile -raw um in (gc $holfile | out-string)

Grüße Uwe
Bitte warten ..
Mitglied: Rene12345
13.06.2017 um 17:10 Uhr
Problem gelöst. Mein eigener Computer ist Windows 10, die Clients haben noch Windows 7...
Hatte dem Testuser schon Domänadmin Rechte und alles gegeben, vielen Dank auf jeden Fall sehr freundlich!
Bitte warten ..
Ähnliche Inhalte
Outlook & Mail
Outlook 2003 druckt auf falschem Drucker (4)

Frage von achklein zum Thema Outlook & Mail ...

Administrator.de Feedback
Wir wünschen Euch schöne Feiertage (15)

Information von admtech zum Thema Administrator.de Feedback ...

Voice over IP
gelöst VoIP - Was kann man alles falsch machen? (20)

Frage von MegaGiga zum Thema Voice over IP ...

Neue Wissensbeiträge
Heiß diskutierte Inhalte
Rechtliche Fragen
gelöst Geschäftsführer Email gefaked (18)

Frage von xbast1x zum Thema Rechtliche Fragen ...

Vmware
gelöst Update auf ESXI 6.5 Installieren (15)

Frage von zeroblue2005 zum Thema Vmware ...

Vmware
VMware ESX - Start einer VM verhindern (15)

Frage von emeriks zum Thema Vmware ...

Festplatten, SSD, Raid
gelöst Welche Software für Bandlaufwerk (14)

Frage von djonas zum Thema Festplatten, SSD, Raid ...