approved_ok 1 Geschrieben 21. August 2022 Melden Teilen 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 Link zu diesem Kommentar
mwiederkehr 373 Geschrieben 22. August 2022 Melden Teilen 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 Link zu diesem Kommentar
Beste Lösung approved_ok 1 Geschrieben 24. August 2022 Autor Beste Lösung Melden Teilen 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 Link zu diesem Kommentar
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.