Namensänderungen von SharePoint Benutzern können immer wieder zu überraschenden Resultaten führen, nicht selten sind die Änderungen von Benutzerattributen nicht in allen Sitecollections sichtbar. Mögliche Ursachen und deren Hintergründe werden im Folgenden dargestellt.
stsadm -o migrateuser -oldlogin DOMAIN\oldusername -newlogin DOMAIN\newusername -ignoresidhistory
bzw. mit PowerShell
Move-SPUser -Identity “DOMAIN\oldusername ” -NewAlias “DOMAIN\newusername ” -IgnoreSID
Dennoch kommt es in der Praxis immer wieder vor, dass in den Wochen nach einer Namensänderung gelegentlich Sitecollections auftauchen können, in denen noch der alte Name angezeigt wird.
Ursache hierfür kann sein, dass der Timerjob “User Profile to SharePoint Full Synchronization” nur aktive Benutzerkonten einer Sitecollection synchronisiert. Ein Konto ist aktiv, wenn der Benutzer in einer Sitecollection Daten erstellt, geändert oder gelöscht hat. Ein ausschließlich lesender Zugriff belässt das Konto auf inaktiv. Wird ein solches Konto nach einer Namensänderung aktiv, wird es mit dem alten Benutzerdaten angezeigt.
Eine vollständige Synchronisation, auch der inaktiven Konten, kann wie folgt erreicht werden:
stsadm –o sync –ignoreisactive 1
Weitere Details zu diesem Verhalten hat Roger Cormier in seinem Artikel How to Update Inactive User Profile Information in SharePoint beschrieben. Der Artikel von Nishant Shah Troubleshooting User Profile Sync Issues in Office SharePoint Server 2007 enthält unter Anderem eine Liste mit weiteren Punkten, die eine erfolgreiche Synchronisation verhindern können.
Sollen gezielt nur Daten eines Benutzerkontos mit dem Active Directory synchronisiert werden, ist dies mit Set-SPUser im Zusammenhang mit dem Parameter -SyncFromAD möglich. Diese Methode bietet sich in SharePoint Foundation-Umgebungen an, wo kein UPS zur Verfügung steht.
Das Skript von Gary Laponte aktualisiert farmweit für einen Benutzer alle User Information Lists:
function Sync-SPUser([string]$userName) {
Get-SPSite -Limit All | foreach {
$web = $_.RootWeb
if ($_.WebApplication.UseClaimsAuthentication) {
$claim = New-SPClaimsPrincipal $userName -IdentityType WindowsSamAccountName
$user = $web | Get-SPUser -Identity $claim -ErrorAction SilentlyContinue
} else {
$user = $web | Get-SPUser -Identity $userName -ErrorAction SilentlyContinue
}
if ($user -ne $null) {
$web | Set-SPUser -Identity $user -SyncFromAD
}
$web.Dispose()
$_.Dispose()
}
}
Zu beachten ist, dass Set-SPUser nur die Attribute des Anzeigenamens sowie der Emailadresse synchronisiert.
Mit etwas mehr Aufwand ist es auch möglich weitere Attribute zu synchronisieren. Details hierzu finden sich in dem ausgezeichneten Artikel Update SharePoint 2010 User Information von Gary Laponte.
Credits: