Kalender in Outlook-Datendatei per Skript von Notizen befreien
Moin Kollegen.
Hat sich jemand mal damit befasst? Die Anforderung ist schon sehr speziell.
Ich finde mehrere Tools, die per Skript alle Anhänge aus einer PST nehmen, aber noch keins, welches auch alle Notizen aus Terminen im Kalender dieser PST entfernt - das ist hier erwünscht, die Termine selbst (Zeiten, Betreff, Teilnehmer) sollen bestehen bleiben.
Hat sich jemand mal damit befasst? Die Anforderung ist schon sehr speziell.
Ich finde mehrere Tools, die per Skript alle Anhänge aus einer PST nehmen, aber noch keins, welches auch alle Notizen aus Terminen im Kalender dieser PST entfernt - das ist hier erwünscht, die Termine selbst (Zeiten, Betreff, Teilnehmer) sollen bestehen bleiben.
Please also mark the comments that contributed to the solution of the article
Content-Key: 554562
Url: https://administrator.de/contentid/554562
Printed on: May 3, 2024 at 11:05 o'clock
5 Comments
Latest comment
Servus DWW,
kleiner PS Schnippsel der das erledigt
Der Code oben macht das bei der momentan eingebundenen Standard-PST, falls du das bei einer anderen PST-Datei machen willst geht das auch mit ein paar Erweiterungen. (Pfad zur PST anpassen).
Grüße Uwe
kleiner PS Schnippsel der das erledigt
[void][reflection.assembly]::LoadWithPartialName("microsoft.visualbasic")
$objOL = [microsoft.visualbasic.interaction]::GetObject($null,"Outlook.Application")
if (!$objOL){$objOL = New-Object -Com Outlook.Application}
$objOL.GetNamespace("MAPI").GetDefaultFolder(9).Items | ?{$_.Body -ne ''} | %{$_.Body = "";$_.Save()}
# pst path
$pst = "E:\backup.pst"
# ===================
# load outlook com object
[void][reflection.assembly]::LoadWithPartialName("microsoft.visualbasic")
$objOL = [microsoft.visualbasic.interaction]::GetObject($null,"Outlook.Application")
if (!$objOL){$objOL = New-Object -Com Outlook.Application}
# namespace object
$ns = $objOL.GetNamespace("MAPI")
# add pst to session
$ns.AddStore($pst)
# get added store for pst
$ns.Stores | ?{$_.FilePath -eq $pst} | %{
# find all calendars in root
$_.GetRootFolder().Folders | ?{$_.DefaultItemType -eq 1} | %{
# remove body of all messages with body content
$_.Items | ?{$_.Body -ne ''} | %{$_.Body = '';$_.Save()}
}
# close store
$ns.RemoveStore($_.GetRootFolder())
}
Freut mich wenn ich helfen konnte .
Für den ersten Code
Für den Zweiten
Entfernt in beiden Fällen zusätzlich die "RequiredAttendees", "OptionalAttendees" und alle "Resource" Objects aus den Terminen. Kann du ja jetzt nach belieben anpassen.
Weitere Eigenschaften von Terminen (AppointmentItems) kannst du in der API-Doku nachschlagen falls noch was gewünscht sein sollte:
https://docs.microsoft.com/de-de/office/vba/api/outlook.appointmentitem# ...
Schönes WE
Uwe
Zitat von @DerWoWusste:
Wenn Du so im Stoff stehst, kannst Du noch eine Zeile hinzupacken, die auch die Teilnehmerliste entfernt? Hier greift sicherlich bald wieder die Paranoia um sich und das wird auch noch gewünscht.
Wenn Du so im Stoff stehst, kannst Du noch eine Zeile hinzupacken, die auch die Teilnehmerliste entfernt? Hier greift sicherlich bald wieder die Paranoia um sich und das wird auch noch gewünscht.
Für den ersten Code
[void][reflection.assembly]::LoadWithPartialName("microsoft.visualbasic")
$objOL = [microsoft.visualbasic.interaction]::GetObject($null,"Outlook.Application")
if (!$objOL){$objOL = New-Object -Com Outlook.Application}
$objOL.GetNamespace("MAPI").GetDefaultFolder(9).Items | %{
$_.Body = ''
$_.RequiredAttendees = ''
$_.OptionalAttendees = ''
$_.Resources = ''
$_.Save()
}
# pst path
$pst = "E:\backup.pst"
# load outlook com object
[void][reflection.assembly]::LoadWithPartialName("microsoft.visualbasic")
$objOL = [microsoft.visualbasic.interaction]::GetObject($null,"Outlook.Application")
if (!$objOL){$objOL = New-Object -Com Outlook.Application}
# namespace object
$ns = $objOL.GetNamespace("MAPI")
# add pst to session
$ns.AddStore($pst)
# get added store for pst
$ns.Stores | ?{$_.FilePath -eq $pst} | %{
# find all calendars in root
$_.GetRootFolder().Folders | ?{$_.DefaultItemType -eq 1} | %{
# clear message properties
$_.Items | %{
$_.Body = ''
$_.RequiredAttendees = ''
$_.OptionalAttendees = ''
$_.Resources = ''
$_.Save()
}
}
# close store
$ns.RemoveStore($_.GetRootFolder())
}
Entfernt in beiden Fällen zusätzlich die "RequiredAttendees", "OptionalAttendees" und alle "Resource" Objects aus den Terminen. Kann du ja jetzt nach belieben anpassen.
Weitere Eigenschaften von Terminen (AppointmentItems) kannst du in der API-Doku nachschlagen falls noch was gewünscht sein sollte:
https://docs.microsoft.com/de-de/office/vba/api/outlook.appointmentitem# ...
Schönes WE
Uwe