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
ich es tatsächlich bekam arbeiten mit: Ein PS-Skript, das viel zu lang ist, um hier zu posten ......... – ArKersten