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
- 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
„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.
Neue, leere Access-Datenbank erstellen.
Reiter „Externe Daten“ > Button „Weitere Optionen“ > „SharePoint-Liste„
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.
Liste „UserInfo“ auswählen und „OK„.
„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)"
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
Hallo Leute,
danke für die Info, das war bisher die einzige, die auf die UserInfo hingewiesen hat. (UserInfo kenn ich jedoch schon;-))
Ich habe eine Frage zu Access:
Ich will dort den aktuellen User, der im Sharepoint angemeldet ist, auslesen.
Habt ihr da eine VBA?
Viele Grüße
pedro
Hi Pedro,
es ist mir leider nicht bekannt, wie dies mit Access bzw. VBA realisierbar ist. Sorry.
Wir machen das mit Nintex Forms direkt auf der SP-Seite.
Gruß
Olli