使用CSOM / PowerShell列出列表权限时遇到问题。
变量/过滤器
$spSiteUrl = "https://mytenant.sharepoint.com"
获取凭据
if($cred -eq $null)
{
$cred = Get-Credential
}
加载程序集
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client") | Out-Null
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client.Runtime") | Out-Null
连接到SharePoint并显示网站标题
Write-Host "Connecting to SharePoint"
$ctx = New-Object Microsoft.SharePoint.Client.ClientContext($spSiteUrl)
$ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($cred.UserName, $cred.Password)
$web = $ctx.Web
$ctx.Load($web)
$ctx.ExecuteQuery()
Write-host "Site Name : $($web.Title)"
列出“有用”应用程序的功能
function getApps($web)
{
$appsArray = @()
$apps = $web.Lists
$ctx.Load($apps)
$ctx.ExecuteQuery()
Write-Host "List of aplications : "
foreach($app in $apps){
if($app.Hidden -eq $false)
{
$item = New-Object PSObject
$item | Add-Member -MemberType NoteProperty -Name 'Col1' -Value $($app.Title)
$item | Add-Member -MemberType NoteProperty -Name 'Col2' -Value $($app.HasUniqueRoleAssignments)
$item | Add-Member -MemberType NoteProperty -Name 'Col3' -Value $($app.RoleAssignments)
$item | Add-Member -MemberType NoteProperty -Name 'Col4' -Value $($app.BrowserFileHandling)
$item | Add-Member -MemberType NoteProperty -Name 'Col5' -Value $($app.EffectiveBasePermissions)
$item | Add-Member -MemberType NoteProperty -Name 'Col6' -Value $($app.Fields)
$item | Add-Member -MemberType NoteProperty -Name 'Col7' -Value $($app.WorkflowAssociations)
$appsArray += $item
}
}
$appsArray | Format-Table
}
调用函数
getApps($web)
我的问题是:
给我回复错误
该集合尚未初始化。它没有被要求或 请求尚未执行。它可能需要明确 请求..
答案 0 :(得分:0)
例外
该集合尚未初始化。它没有被要求或 请求尚未执行。它可能需要明确 请求。
通常意味着您尚未从服务器检索您尝试使用的属性(例如HasUniqueRoleAssignments)。
您可能需要额外的ExecuteQuery来加载每个应用
foreach($app in $apps){
if($app.Hidden -eq $false)
{
$ctx.Load($app)
$ctx.ExecuteQuery()
您最终会注意到,使用常规csom api(例如HasUniqueRoleAssignments)无法检索某些属性,对于那些可以使用Gary的powershell的用户,您可以使用其他方式使用LINQ
foreach($app in $apps){
if($app.Hidden -eq $false)
{
$ctx.Load($app)
Load-CSOMProperties -object $app -propertyNames @("HasUniqueRoleAssignments")
$ctx.ExecuteQuery()
https://gist.github.com/glapointe/cc75574a1d4a225f401b#file-load-csomproperties-ps1