SharePoint Benutzer und deren Berechtigungen mit PowerShell auslesen

2. Juli 2012

Dieser Artikel beschreibt, wie mittels einfacher PowerShell-Kommandos die Benutzer und Berechtigungen von einer Site Collection eines SharePoint Servers ausgelesen werden können.

Durch das PowerShell SharePoint-AddIn werden eine Fülle von Befehlen bereitgestellt, mit denen man Informationen aus dem SharePoint 2010 auslesen, anlegen oder aber auch den SharePoint konfigurieren kann.

Das folgende PowerShell-Commandlet ist folgendermaßen aufgebaut:

  1. Hinzufügen des SharePoint Powershell-AddIn
  2. Abfrage aller Benutzer und deren Berechtigungen über den Befehl Get-SPUser
  3. Speichern der Informationen in einem Objekt für eine spätere Ausgabe

In diesem Fall möchten wir die folgenden Benutzer und deren Berechtigungsinformationen ausgeben:

  • Loginname
  • Benutzername
  • explizite Benutzerrolle
  • Benutzerrolle innerhalb der Gruppe
  • Gruppe(n)
param($Site = "<Name der Site Collection>")

if((Get-PSSnapin -Name "Microsoft.SharePoint.PowerShell" -EA 0) -eq $null)
{
  Add-PSSnapin "Microsoft.SharePoint.PowerShell"
}


#Auslesen aller Benutzer mit Detailinformationen wie Gruppen, Rollen, etc. innerhalb der aktuellen Site Collection Url.
$users = Get-SPUser -Web $Site -ErrorAction Stop | select UserLogin, DisplayName, @{Label="ExplicitGivenRoles";expression={$_.Roles}}, @{Label="RolesGivenViaGroups";expression={$_.Groups | %{$_.Roles}}}, Groups

$users | foreach{
    $strGroups = ""
    $strGroupWithoutPraefix = ""
    $_.Groups | foreach{$strGroups += "$_, "}
    if($strGroups -ne "")
    {$strGroupWithoutPraefix = $strGroups.Substring(0,$strGroups.Length-2)}
    $object = New-Object PSObject
        $object | add-member noteproperty -name "UserLogin" -value $_.UserLogin
        $object | add-member noteproperty -name "DisplayName" -value $_.DisplayName
        $object | add-member noteproperty -name "ExplicitRoles" -value $_.ExplicitGivenRoles
        $object | add-member noteproperty -name "GroupRoles" -value $_.RolesGivenViaGroups
        $object | add-member noteproperty -name "SPGroup" -value $strGroupWithoutPraefix
        $object
}

Fazit

Das innerhalb dieses Artikels beschriebene Powershell-Commandlet ermöglicht es, mit wenigen Zeilen Code die Benutzer und Berechtigungen einer Site Collection im SharePoint Server auszulesen.
 
Zusätzlich zum aktuell verwendeten Commandlet Get-SPUser, existieren innerhalb des SharePoint SnapIns noch weitere Commandlets, welche Sie auf den Microsoft Technet noch näher erläutert finden.