25. November 2019 · von Joerg Sager

Im SharePoint Active-Directory Gruppennamen updaten

Wer im Active-Directory (AD) eine Gruppe umbenennt, welche im SharePoint verwendet wird, der hat das Problem, dass diese nicht den neuen Namen im SharePoint erhält. Der SharePoint Server bzw. der UserProfileService erneuert nicht die Namen von verwendeten AD-Gruppen im SharePoint.

Bei Benutzer-Accounts funktioniert dieses automatisch oder kann mit dem Set-SPUser Powershell-Befehl und SyncFromAD Parameter manuell schnell gelöst werden. Dieser Befehl funktioniert leider nicht für AD-Gruppen und wird mit folgendem Fehler ausgewiesen:

Set-SPUser : Cannot get the full name or e-mail address of user

Mit einem kleinen Powershell-Script kann man die Namen allerdings schnell erneuert bekommen.

Über die SID, welche sowohl im SharePoint als auch im ActiveDirectory übereinstimmt kann man die jeweilige Gruppe identifizieren.

In diesem Beispiel wird das Attribut „displayname“ verwendet. Möglich wären natürlich auch das „name“-Attribut oder „samAccountname“-Attribut.

Das Script lädt alle Gruppen aus dem AD und geht dann alle SharePoint-Seiten durch und erneuert die Namen von den Gruppen, welche einen neuen Namen haben.

## Holt alle Gruppen vom aktuellen AD und aktualisiert den Anzeigename
## Erstelle Cache von allen Gruppen => Displayname und SID
$searcher=[adsisearcher]"(objectCategory=group)"
$result = $searcher.FindAll()

$grpcache = @{}

foreach($r in $result){      
    $sid = (New-Object -TypeName System.Security.Principal.SecurityIdentifier -ArgumentList $($r.Properties.objectsid), 0).value
    $name =  $r.Properties.displayname
    if($name){
        $grpcache[$sid] = $name;
    }
}

## Aktualisiere im SharePoint den Displayname von Gruppen
$allsites = Get-SPSite -Limit All 

foreach($s in $allsites){
    $users = $s.rootweb.siteusers
    foreach($u in $users){
        if($u.IsDomainGroup){
            $sid = $u.UserLogin.Replace("c:0+.w|","")
            if($grpcache.ContainsKey($sid)){
               $newname= $grpcache[$sid];
               $oldname = $u.Displayname
               if($newname -ne $oldname){
                   Set-SPUser -Identity $u -DisplayName $newname
                   Write-Host "Gruppe erneuert von $oldname nach $newname"
               }
            }
        }
    }
}

Write-Host "Alle Gruppennamen aktualisiert" 


Diesen Blogeintrag bewerten:

7 Stimmen mit durchschnittlich 4.4/5 Punkten

Haben Sie Fragen zu diesem Artikel oder brauchen Sie Unterstützung?

Nehmen Sie mit uns Kontakt auf!

Wir unterstützen Sie gerne bei Ihren SharePoint-Vorhaben!


Schreibe einen Kommentar

Kontakt.
Lassen Sie sich von uns beraten
Wir freuen uns über Ihr Interesse an unseren Leistungen. Hinterlassen Sie
uns Ihren Namen, Ihre Telefonnummer und E-Mail Adresse – wir melden
uns schnellstmöglich bei Ihnen.
Kontakt aufnehmen