Jump to content

Outlook Adressen löschen


Recommended Posts

Hallo und Guten Morgen,

 

Umgebung: Exchange Online mit Office 365 Outlook Clients

 

Es wurde von einem Dienstleister für eine Mitarbeiter per CRM Online Sync eine falsche Kategorie mit  Demo Adressen an Mitarbeiter verteilt, welche nun jeder Mitarbeiter in Outlook hat.

 

Die Adressen serverseitig per Exchange Online Powershell zu löschen brachte nicht wirklich den Erfolg:

 

Get-Mailbox -Filter '(RecipientTypeDetails -eq "UserMailbox")' | search-mailbox -Searchquery 'kind:contacts AND subject:" -Falsche Kategorie"' -DeleteContent

 

 Nun der nächste Versuch über ein Script bei Outlook anzusetzen und hier pro User die Kategorie und Adressen zu löschen:

 

Früher habe ich das mal so gelöst per VBA als Makro - Aber das war 2004:

Private Sub Kontakte_löschen()
' Löschen von Kontakten einer Kategorie
   
Dim appOL As New Outlook.Application
Dim olns As NameSpace
Dim fld As MAPIFolder
Dim itms As Items
Dim itm As Variant

Set olns = appOL.GetNamespace("MAPI")
Set fld = olns.GetDefaultFolder(olFolderContacts)
Set itms = fld.Items
For Each itm In itms
    If itm.Categories = "Kategorie" Then
     itm.Delete
    End If
Next
End Sub

Ich will das aber nicht mehr als Makro per VBA machen . Hat jemand eine Idee wie das am besten gelöst werden kann ?

Edited by WSUSPraxis
Link to post

Ich finde VBA nicht schlecht :-)  Alternativ, falls du etwas neueres brauchst, könntest du auf die Powershell switchen. Anzubieten hätte ich folgendes:

$outlook = New-Object -ComObject Outlook.Application
$namespace = $outlook.GetNamespace("MAPI")

# Entferne alle Kategorien
foreach($categorieItem in $namespace.categories)
{
	$namespace.Categories.Remove($categorieItem.Name)
}

 

Vermerk an mich: Nicht alles geschriebene gleich ausprobieren :lool:

 

Edited by MurdocX
  • Haha 1
Link to post
vor 7 Stunden schrieb MurdocX:

Ich finde VBA nicht schlecht :-)  Alternativ, falls du etwas neueres brauchst, könntest du auf die Powershell switchen. Anzubieten hätte ich folgendes:


$outlook = New-Object -ComObject Outlook.Application
$namespace = $outlook.GetNamespace("MAPI")

# Entferne alle Kategorien
foreach($categorieItem in $namespace.categories)
{
	$namespace.Categories.Remove($categorieItem.Name)
}

 

Vermerk an mich: Nicht alles geschriebene gleich ausprobieren :lool:

 

 

Hallo und Guten Morgen,

 

Danke Dir ! Aber lösche ich nicht damit alle Kategorien ? Ich bekomme den Sprung nicht hin, nur die bestimmte zu suchen und zu löschen. 

 

Viele Grüße Arnd 

Link to post
vor 29 Minuten schrieb MurdocX:

Guten Morgen,


ja das stimmt. Momentan entfernst du damit alles. Zu lösen wäre das mit einem Array. Sind es bei allen die Gleichen? Wie viele wären das denn? 

Guten Morgen,

 

In der Falschen Kategorie, es ist nur eine, sind ca. 200 Testadresssen.

 

Die Falsche Kategorie muss raus und die 220 Testadressen.

 

Viele Grüße Arnd 

Link to post

Mehrere prüfst du gegen ein Array, wie in diesem Beispiel:

# Zu löschende Kategorien
[string[]]$zuLoeschendeKategorien = 'Test1','Test2','Test3'

# Abrufen des Namespaces
$outlook = New-Object -ComObject Outlook.Application
$namespace = $outlook.GetNamespace('MAPI')

# Verarbeite alle Kontakte
foreach($contactItem in $namespace.GetDefaultFolder(10).items)
{
    #$contactItem -> Das ist ein Kontakt
}

# Verarbeite alle Kategorien
foreach($categorieItem in $namespace.categories)
{
    if($zuLoeschendeKategorien -contains $categorieItem.Name)
    {
		# Lösche die betreffende Kategorie
        $namespace.Categories.Remove($categorieItem.Name)
    }
}

 

Ohne Beispiele fast unmöglich treffende Skripte zu schreiben. Wenn du Dir mein Beispiel ansiehst, dann kannst du mit der ForEach für Kontakte ein bisschen spielen. Hier fehlt nur noch die Abfrage nach dem Namen, dann kannst du den Kontakt löschen. Nimm Dir Visual Studio Code oder die PowershellISE zur Hand. Die Software wird dich gut unterstützen.

Link to post
  • 3 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...