„Benutzerinformationsliste“ – „User Information List“ – „UserInfo“

Was ist die „Benutzerinformationsliste“ – „User Information List“ – „UserInfo“?

Die „Benutzerinformationsliste“ („Title“ in deutschen Systemen) bzw. „User Information List“ („Title“ in englischen Systemen) bzw. „UserInfo“ („EntityTypeName“ in PowerShell bzw. Anzeige in MS-Access) ist eine versteckte SharePoint-Liste.

In jeder Websitesammlung existiert diese UserInfo-Liste (für jede Sitecollection eine eigene), auf die der Websitesammlungsadministrator zugreifen kann.

Diese Liste enthält Zeilen mit Benutzerinformationen und unter anderem folgenden Metainformationen (je nach dem, auf welche Art diese Liste angezeigt wird, s. weiter unten):

  • PowerShell (Get-SpUser)
    • Name
    • Email
    • Notes
    • LoginName
    • Groups
    • OwnedGroups
    • ID
    • Xml
    • RawSid
    • Sid
    • SystemUserKey
    • UserId
    • IsSiteAdmin
    • IsSiteAuditor
    • IsDomainGroup
    • IsApplicationPrincipal
    • IsHiddenInUI
    • IsShareByEmailGuestUser
    • RequireRequestToken
    • AllowBrowseUserInfo
    • IsUserSettingsSyncedWithProvider
    • Alerts
    • UserToken
    • RegionalSettings
    • LanguageSettings
    • ParentWeb
    • Roles
    • UserLogin
    • DisplayName
  • MS-Access
    • ID
    • Name
    • Konto
    • Geschäftliche E-Mail-Adresse
    • Handy
    • Info
    • SIP-Adresse
    • Ist Websiteadministrator
    • Gelöscht
    • Ausgeblendet
    • Foto
    • Abteilung
    • Titel
    • Vorname
    • Nachname
    • Telefon (geschäftlich)
    • Benutzername
    • Website
    • Fragen
    • Büro
    • Bildzeitstempel
    • Bildplatzhaltestatus
    • Bildplatzhalter-Synchronisierungsstatus
    • Firma
  • SharePoint Web-GUI
    • Name (DisplayName)
    • Info
    • Titel
    • Abteilung

Es wird jedes mal ein neuer Eintrag mit Benutzerinformationen erzeugt (falls der Benutzer noch nicht in der Liste), sobald jemand auf ein Element bzw. die Site berechtigt wird, bzw. sich auf der Site anmeldet.

Beispiel: In der Liste „User Information List“ einer frisch erstellten SiteCollection befinden sich die initial darauf berechtigten Personen (wie SiteCollection-Admins, Site-Besitzer etc.). Wenn ich nun, als WebApplikation-Admin auf die SiteCollection zum ersten mal zugreife (beispielsweise per PowerShell-CMDlet Get-SpUser), dann wird meine aktuelle Benutzerkennung mit den dazugehörigen Metainformationen in diese „User Information List“ eingetragen. Die Informationen kommen entweder aus dem Benutzerprofildienst (User Profile Service) oder aus dem AD.

Wie kann ich die „Benutzerinformationsliste“ – „User Information List“ – „UserInfo“ anzeigen

Es gibt mehrere Arten, die versteckte Liste mit dem Titel „Benutzerinformationsliste“ bzw. „User Information List“ anzuzeigen. Es werden, je nach Zugriffsart mehr oder weniger Informationen angezeigt.

„Benutzerinformationsliste“ direkt im SharePoint anzeigen

Die Liste „Benutzerinformationsliste“ bzw. „User Information List“ kann sehr einfach und schnell direkt in der SharePoint-WebGUI angezeigt werden. Die Anzahl der Spalten bzw. der Attribute ist hier allerdings sehr gering.

Die URL der Sitecollection muss um folgenden Teil (ein aus diesen drei) erweitert werden.

  • _catalogs/users/simple.aspx
  • _catalogs/users/detail.aspx
  • _layouts/15/people.aspx?MembershipGroupId=0

Bei den beiden ersten URLs werden die Benutzerlisten nur angezeigt, bei der dritten URL kann man den Benutzer auch komplett aus diesen Listen und somit auch aus der SiteCollection entfernen.

Beispiel für eine zusammengesetzte URL:
https://sharpoint-portal.de/sitecollection/_layouts/15/people.aspx?MembershipGroupId=0

Benutzer und Gruppen - Alle Personen - _layouts-15-people.aspx-MembershipGroupId-0 - Benutzerinformationsliste - SharePoint 2013

„Benutzerinformationsliste“ in MS-Access anzeigen

Es ist möglich eine SharePoint-Liste, sowie die uns hier interessierende „Benutzerinformationsliste“, in Microsoft Access zu öffnen.

Es werden umfangreiche, in anderen Zugriffsarten nicht vorhandene, Metainformationen (wie Telefon) angezeigt.

Benutzerinformationsliste - UserInfo - Name - Konto - Geschäftliche E-Mail-Adresse - MS Access

 

Neue, leere Access-Datenbank erstellen.

Reiter „Externe Daten“ > Button „Weitere Optionen“ > „SharePoint-Liste

Reiter Externe Daten - Button Weitere Optionen - SharePoint-Liste - MS Access

URL der SiteCollection einfügen, die zweite Option „Erstellen Sie eine Verknüpfung zur Datenquelle, indem Sie eine verknüpfte Tabelle erstellen“ auswählen, „Weiter“ klicken.

Quelle und Ziel der Daten auswählen - Erstellen Sie eine Verknüpfung zur Datenquelle - MS Access

Liste „UserInfo“ auswählen und „OK„.

Wählen Sie die SharePoint-Listen aus, zu denen Sie eine Verknüpfung herstellen möchten - UserInfo - MS Access

„Benutzerinformationsliste“ in PowerShell anzeigen

Es ist zwar per PowerShell möglich, sich wie gewohnt den Inhalt der Liste „Benutzerinformationsliste“ bzw. „User Information List“ auszugeben (s.u).

$site = Get-SPSite "https://sharpoint-portal.de/sitecollection"
$web = $site.OpenWeb()
#$list = $web.lists["User Information List"]
$list = $web.lists["Benutzerinformationsliste"]
$list.Items | fl | Out-File c:\DumpUserInfoList.txt

 

Aber SharePoint bringt für PowerShell ein eigenes, dafür besser geeignetes CMD-let: Get-SpUser.

# UserInfo-Liste bzw. "User Information List" bzw. "Benutzerinformationsliste" anzeigen
# ----------------------------------------------------
$WebURL = "https://sharpoint-portal.de/sitecollection"   #SiteCollection

Write-Verbose "SharePoint-Module werden geladen..."
Add-PSSnapin Microsoft.SharePoint.PowerShell

# Puffer (sonst werden z.B. Spalten rechts abgeschnitten in der Konsolen- und TXT-Ausgabe etc.)
$buffer = $host.ui.RawUI.BufferSize; $buffer.width = 3000; $buffer.height = 3000; $host.UI.RawUI.Set_BufferSize($buffer)

# Web-Objekt und List-Objekt aus den oberen Eingaben holen
$Web = Get-SPWeb $WebURL; Write-Verbose "Website: $Web"

# Alle User der SiteCollection ausgeben
#Ist die selbe Ausgabe wie: (Get-SpWeb $Web).SiteUsers
# Dieselben Einträge wie in "..._layouts/15/people.aspx?MembershipGroupId=0" und "..._catalogs/users/simple.aspx" und "..._catalogs/users/detail.aspx"
$user = $web | Get-SPUser -Limit ALL                 

# Benutzer mit Spalten ausgeben
#$user | ft -AutoSize *

# Benutzer mit den nötigsten Spalten in der Konsole ausgeben, sortiert nach ID
#$user | Sort ID | ft -AutoSize ID, UserLogin, DisplayName, Name, LoginName, SystemUserKey, IsSiteAdmin, IsSiteAuditor, IsDomainGroup, Email, Sid, Roles, Groups, OwnedGroups, IsShareByEmailGuestUser, RequireRequestToken, AllowBrowseUserInfo, IsUserSettingsSyncedWithProvider, Alerts, UserToken

# Benutzer mit den nötigsten Spalten in GridView ausgeben, sortiert nach DisplayName
$user | Sort DisplayName | Select ID, UserLogin, DisplayName, Name, LoginName, SystemUserKey, IsSiteAdmin, IsSiteAuditor, IsDomainGroup, Email, Sid, Roles, Groups, OwnedGroups, IsShareByEmailGuestUser, RequireRequestToken, AllowBrowseUserInfo, IsUserSettingsSyncedWithProvider, Alerts, UserToken | Out-GridView -Title "User Count:$($user.count)"

 

UserInfo - User Information List - Benutzerinformationsliste - Get-SpUser - Out-GridView - PowerShell

Anwendungsfall: „DisplayName“ korrigieren (Sync From AD)

 In manchen Fällen wird der DisplayName in der „User Information List“ nicht korrekt abgespeichert. Das Resultat ist: Der Name dieses Benutzers wird an vielen Stellen in dieser Websitesammlung falsch dargestellt (z.b. in der Form „Benutzerkennung@domain.com“ und nicht wie es korrekt wäre „Name, Vorname„.

Der Name kann per PowerShell korrigiert werden, bzw. vom AD synchronisiert werden. Dazu folgende Schritte durchführen.

Eventuell einen falschen Eintrag aus dem Benutzerprofildienst (User Profile Service = UPS) vorher entfernen.

# DisplayName aus dem AD ziehen und in SP aktualisieren
# ---------------------------------------------------------
$ProblemUserAccount = "Benutzerkennung"        #Benutzer-Kennung der Person, bei der der DisplayName nicht korrekt ist. Unten wird die Domäne dazu geschrieben.
$Domain = "@domain.de"            #Domäne (aus z.B. UserLogin oder LoginName)
$WebURL = "https://sharpoint-portal.de/sitecollection"   #SiteCollection

Write-Verbose "SharePoint-Module werden geladen..."
Add-PSSnapin Microsoft.SharePoint.PowerShell

# Puffer (sonst werden z.B. Spalten rechts abgeschnitten in der Konsolen- und TXT-Ausgabe etc.)
$buffer = $host.ui.RawUI.BufferSize; $buffer.width = 3000; $buffer.height = 3000; $host.UI.RawUI.Set_BufferSize($buffer)

# Web-Objekt und List-Objekt aus den oberen Eingaben holen
$Web = Get-SPWeb $WebURL; Write-Verbose "Website: $Web"

# Alle User der SiteCollection ausgeben
#Ist die selbe Ausgabe wie: (Get-SpWeb $Web).SiteUsers
# Dieselben Einträge wie in "..._layouts/15/people.aspx?MembershipGroupId=0" und "..._catalogs/users/simple.aspx" und "..._catalogs/users/detail.aspx"
$user = $web | Get-SPUser -Limit ALL    

# Aus der BenuntzekKennung den DisplayNamen bauen
$ProblemDisplayName = $ProblemUserAccount+$Domain

# Benutzer mit nicht korrektem "DisplayName"
$ProblemUser = $user | ?{$_.DisplayName -eq $ProblemDisplayName}

# Problem-User anzeigen
Write-Warning "Folgender Benutzer wird gleich aus dem AD neu eingelesen"
$ProblemUser | fl ID, UserLogin, DisplayName, Name, LoginName, SystemUserKey, IsSiteAdmin, IsSiteAuditor, IsDomainGroup, Email, Sid, Roles, Groups

# "DisplayName" ändern bzw. vom AD ziehen.
# set-spuser -identity $user -displayname "PEET\MigratedGroup"
Set-SPUser –Identity $ProblemUser –SyncFromAD –Web $Web -Confirm

# Noch einmal frische Benutzerliste ziehen
$user = $web | Get-SPUser -Limit ALL

# Benutzer mit der Problemkennung anzeigen (hier sollte jetzt der korrekte DisplayName angezeigt werden)
Write-Host "`nDer Benutzer sieht nun wie folgt aus" -ForegroundColor Cyan
$NotProblemUser = $user | ?{$_.UserLogin -like "*$ProblemUserAccount*"}
$NotProblemUser | fl ID, UserLogin, DisplayName, Name, LoginName, SystemUserKey, IsSiteAdmin, IsSiteAuditor, IsDomainGroup, Email, Sid, Roles, Groups

Quellen und Links

Teile diesen Beitrag

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.