2016-07-21 12 views
0

Mit Powershell versuche ich, Berechtigungen für eine Unterwebsite meiner SharePoint-Onlineumgebung zu erhalten.Überprüfen Sie die Freigabe für Unterwebsite Sharepoint online CSOM

Die Website, von der ich versuche, die Genehmigung zu erhalten, befindet sich unter https://tenant.sharepoint.com/production.

Ich möchte wissen, welche Benutzer oder Gruppen Zugriff auf diese Website haben.

Ich verwende CSOM mit Powershell, um eine Verbindung zu meiner Online-Umgebung herzustellen.

+0

ich es tatsächlich bekam arbeiten mit: Ein PS-Skript, das viel zu lang ist, um hier zu posten ......... – ArKersten

Antwort

0

Für Liste der Gruppen bekommen Sie das folgende Beispiel betrachten könnte:

# Retrieve web groups 
$groups = $context.Web.RoleAssignments.Groups 
$context.Load($groups) 
$context.ExecuteQuery() 

Bei Liste der Benutzer für einen bestimmten Web, ist es nicht so einfach, da RoleAssignmentCollection Klasse nicht Users Eigenschaft aussetzt. Wie dem auch sei das folgende Beispiel zeigt, wie man die Liste der Benutzer für eine Website abrufen:

Function Get-WebUsers() { 
param(
    [Microsoft.SharePoint.Client.Web]$Web = $(throw "Please provide a Web") 
) 
    $ctx = $Object.Context 
    $assignments = $context.Web.RoleAssignments 
    $context.Load($assignments) 
    $context.ExecuteQuery() 

    $members = @() 
    $assignments.GetEnumerator() | % { 
     $member = $context.Web.RoleAssignments.GetByPrincipalId($_.PrincipalId).Member 
     $context.Load($member) 
     $members += $member 
    } 
    $context.ExecuteQuery() 

    $users = @() 
    $members | % { 
     if($_.PrincipalType -eq [Microsoft.SharePoint.Client.Utilities.PrincipalType]::User) { 
      $users += $_ 
     } 
    } 
    $users 
} 

Beispiel:

Add-Type –Path "C:\Program Files\Common Files\microsoft shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll" 
Add-Type –Path "C:\Program Files\Common Files\microsoft shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" 

Function Get-Context([String]$WebUrl,$UserName,$Password) { 
    $context = New-Object Microsoft.SharePoint.Client.ClientContext($WebUrl) 
    $SecurePassword = $Password | ConvertTo-SecureString -AsPlainText -Force 
    $context.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($UserName, $SecurePassword) 
    return $context 
} 


Function Get-WebUsers() { 
param(
    [Microsoft.SharePoint.Client.Web]$Web = $(throw "Please provide a Web") 
) 
    $ctx = $Object.Context 
    $assignments = $context.Web.RoleAssignments 
    $context.Load($assignments) 
    $context.ExecuteQuery() 

    $members = @() 
    $assignments.GetEnumerator() | % { 
     $member = $context.Web.RoleAssignments.GetByPrincipalId($_.PrincipalId).Member 
     $context.Load($member) 
     $members += $member 
    } 
    $context.ExecuteQuery() 

    $users = @() 
    $members | % { 
     if($_.PrincipalType -eq [Microsoft.SharePoint.Client.Utilities.PrincipalType]::User) { 
      $users += $_ 
     } 
    } 
    $users 
} 





$Url = "https://contoso.sharepoint.com/news" 
$Username = "[email protected]" 
$Password = "" 


$context = Get-Context -WebUrl $Url -UserName $Username -Password $Password 


# Retrieve web groups 
$groups = $context.Web.RoleAssignments.Groups 
$context.Load($groups) 
$context.ExecuteQuery() 

write "Group names:" 
$groups.GetEnumerator() | % { 
    $_.Title 
} 


#Retieve web users 
$users = Get-WebUsers -Web $context.Web 
write "User names:" 
$users | % { 
    $_.Title 
} 

$context.Dispose() 

Gist: WebUsersAndGroups.ps1