2016-07-21 7 views
0

Используя Powershell, я пытаюсь получить разрешения на дочерний сайт моей онлайн-среды SharePoint.Проверка sharepoint share share онлайн CSOM

Сайт, на котором я пытаюсь получить разрешение, находится по адресу https://tenant.sharepoint.com/production.

Я хочу знать, к кому пользователи или группы имеют доступ к этому сайту.

Я использую CSOM с Powershell для подключения к моей онлайн-среде.

+0

Я действительно получил это работает, используя: Сценарий PS, который слишком длинный, чтобы публиковать здесь ......... – ArKersten

ответ

0

Для получения списка групп вы могли бы рассмотреть следующий пример:

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

В случае списка пользователей для конкретного веба, это не так просто, так как RoleAssignmentCollection класса не выставляет Users свойства. В любом случае в следующем примере показано, как получить список пользователей для веб-сайта:

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 
} 

Пример:

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

 Смежные вопросы

  • Нет связанных вопросов^_^