approved_ok 1 Geschrieben 21. August 2022 Melden Geschrieben 21. August 2022 Über ein externes Programm werden Kontakte in Outlook erstellt. Teile dieser neuen Kontakte 'Kunden' und 'Lieferanten' ($Contact.Body) sollen gelöscht werden. Nach dem Import der Daten sieht das in Outlook / Kontakte so aus: in der Ordneransicht ist das ein 'Unterordner' Im Feld $Contact.Categories ist bei Kunden 'Kundenstamm' und für Lieferanten 'Lieranten' eingetragen - vielleicht hilft das Folgenden Powershellscript habe ich dafür probiert, dieser findet jedoch nur die Kontakteinträge im original 'Kontakte' Ordner. # Abrufen des Namespaces Add-Type -assembly "Microsoft.Office.Interop.Outlook" $outlook = New-Object -ComObject Outlook.Application $namespace = $outlook.GetNamespace('MAPI') #-------------- # Default Contacts folder $Contacts = $namespace.GetDefaultFolder(10) $cnt = 0 foreach ($Contact in $Contacts.Items) { if($Contact.Body -and $Contact.Categories -like "*Kundenstamm*") { echo ("--" + $Contact.Categories+ " :" + $Contact.FullName + " ........" + $Contact.Body ) $cnt++ } } # Anzeige Anzahl bearbeitete Kontakte $cnt $outlook.Quit | Out-Null [GC]::Collect() Frage: wie erreicht man die Unterordner 'Kunden' bzw. 'Lieferanten' Danke im Vorfeld für eure Hilfe Zitieren
mwiederkehr 388 Geschrieben 22. August 2022 Melden Geschrieben 22. August 2022 Mit $Contacts[0] solltest Du den ersten Unterordner erhalten, mit $Contacts["Kunden"] den Kundenordner, unabhängig von dessen Position. Ich weiss nicht, ob $Contacts.Folders einen Enumerator hat. Falls ja, könntest Du mit foreach($Folder in $Contacts.Folders) alle Unterordner durchgehen. Sonst musst Du eine Schleife nehmen mit $Contacts.Folders.GetNext() und die solange ausführen, bis der Rückgabewert $null ist. Beispielcode habe ich nur für VBA gefunden: Zugriff auf einen Unterordner: https://docs.microsoft.com/en-us/office/vba/api/outlook.namespace.getdefaultfolder Iteration über alle Unterordner: https://docs.microsoft.com/en-us/office/vba/api/outlook.folders.getnext Zitieren
Beste Lösung approved_ok 1 Geschrieben 24. August 2022 Autor Beste Lösung Melden Geschrieben 24. August 2022 Danke für die Hilfestellung, hat soweit gut funktioniert: # Abrufen des Namespaces Add-Type -assembly "Microsoft.Office.Interop.Outlook" $outlook = New-Object -ComObject Outlook.Application $namespace = $outlook.GetNamespace('MAPI') #-------------- # Default Contacts folder $Contacts = $namespace.GetDefaultFolder(10) $KundenContacts = $Contacts.Folders["Kunden"] $LieferantenContacts = $Contacts.Folders["Lieferanten"] $Kunden_cnt = 0 $Lieferanten_cnt = 0 <# #------------------------------ # Schleife für Subfolder Kunden foreach ($Contact in $KundenContacts.Items) { if($Contact.Body -and $Contact.Categories -like "*Kundenstamm*" ) { Write-Output ("--" + $Contact.Categories+ " :" + $Contact.FullName + " ........" + $Contact.Body ) 1 Zitieren
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.