Mittwoch, 30. November 2016

[EXCHANGE] Script zum Ordner Umbenennen mit z.B. "\" wegen IMAP

Hat ein Benutzer seine Ordner im Exchange mit dem Sonderzeichen "\" im Namen, so können diese Ordner nicht mit IMAP synchronisiert werden.

Die einzige Lösung ist, die Ordner umzubenennen. Bei vielen Ordner oder vielen Benutzern kann dies mit einem Script gemacht werden

Voraussetzung: C:\MailboxList.txt
Inhalt:
Lister der Mailboxen die durchsucht werden sollen. Eine neue Zeile pro Mailbox

Format:
xyz@domain.com


RenameFolderScript.ps1
mit folgenden Inhalt:



$dllpath =`
“C:\Program Files (x86)\Microsoft\Exchange\Web Services\2.1\Microsoft.Exchange.WebServices.dll”
[void][Reflection.Assembly]::LoadFile($dllpath)
$service = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService(`
[Microsoft.Exchange.WebServices.Data.ExchangeVersion]::Exchange2010)
$windowsIdentity = [System.Security.Principal.WindowsIdentity]::GetCurrent()
$sidbind = “LDAP://<SID=” + $windowsIdentity.user.Value.ToString() + “>”
$aceuser = [ADSI]$sidbind
Write-Output $aceuser
Write-Output $aceuser.mail.ToString()
$service.AutodiscoverUrl($aceuser.mail.ToString(), {$true})
$Domain = $aceuser.mail.ToString().Split(‘@’)[1]
Write-Output "OK BIS HIER, FALLS NICHT ZERTIFIKAT INSTALLIEREN"
foreach ($MailboxName in Get-Content “c:\MailboxList.txt”)
{
    $rfRootFolderID = new-object Microsoft.Exchange.WebServices.Data.FolderId(`
    [Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::MsgFolderRoot,$MailboxName)
    $rfRootFolder = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($service,$rfRootFolderID)
    $fvFolderView = New-Object Microsoft.Exchange.WebServices.Data.FolderView(10000);
    $fvFolderView.Traversal = [Microsoft.Exchange.WebServices.Data.FolderTraversal]::Deep
    $fvFolderView.PropertySet = $Propset
    $ffResponse = $rfRootFolder.FindFolders($fvFolderView);
    foreach ($folder in $ffResponse.Folders)
        {
        if ($folder.Displayname -like “*/*”)
            {
            Write-Output “Found / in the $mailboxName and folder name is:”
            Write-Output $folder.Displayname
           
            $folder.Displayname = $folder.Displayname.Replace("/","-")
            $folder.Update()
            }
    }
}

2 Kommentare:

  1. Hallo,
    Bin neu hier und frage mich gerade, was in diesem "C:/Mailboxlist.txt" file drinstehen soll - gibt es da ein bestimmtes Format oder ist es einfach nur ein Export aus zB Outlook?
    Dankeschön,
    Bernhard

    AntwortenLöschen
    Antworten
    1. Hallo Bernhard Trimmel

      Sorry für die späte Antwort!
      Im Textfile sollte eine Liste der Postfächer sein, die das Script durchsuchen soll. Format:
      xyz@domain.com

      Eine pro Zeile

      Hoffe konnte es klären, passe den Artikel gleich noch an!

      Löschen