![](/img/trans.png)
[英]sharepoint online csom powershell $w.RequestAccessEmail does not return value
[英]SharePoint CSOM PowerShell Does Not Return Web.Folders property
此处的目标是从此PowerShell代码开始访问Web.Folders属性。
Connect-SPOnline –Url https://mysite.sharepoint.com;
$web = Get-SPOWeb;
$web | Get-Member | sort name
从该列表成员中,我可以看到具有以下内容的“文件夹”属性
Definition:
----------
Microsoft.SharePoint.Client.FolderCollection,
Microsoft.SharePoint.Client,
Version=16.1.0.0,
Culture=neutral,
PublicKeyToken=71e9bce111e9429c Folders {get;}
因此,我不应该能够使用以下代码片段检索“文件夹属性”吗?
$ctx = Get-SPOContext;
$folders = $web.Folders;
$ctx.Load($folders);
$ctx.ExecuteQuery();
$folders;
$folders
仅返回以下未初始化的消息。
format-default : The collection has not been initialized. It has not been requested or the request has not been
executed. It may need to be explicitly requested.
+ CategoryInfo : NotSpecified: (:) [format-default], CollectionNotInitializedException
+ FullyQualifiedErrorId : Microsoft.SharePoint.Client.CollectionNotInitializedException,Microsoft.PowerShell.Comma
nds.FormatDefaultCommand
不要让此错误消息使您感到困惑。 即使未从服务器请求客户端对象(文件夹集合)时,通常会发生此错误,但在以下特定情况下,由于以下原因会发生此错误:
$folders
因此,使用指定的片段文件夹集合可以从服务器正确检索:
$web = $ctx.Web
$folders = $web.Folders
$ctx.Load($folders)
$ctx.ExecuteQuery()
为了确定是否已从服务器请求客户端对象,请使用ClientObject.IsObjectPropertyInstantiated method
,例如:
if ($web.IsObjectPropertyInstantiated('Folders') -eq $true)
{
Write-Host "Folder collection has been loaded"
#...
}
下面的示例演示如何访问collection中的文件夹及其属性。
示例1.如何迭代文件夹集合并打印其名称:
$folders.GetEnumerator() | % {
Write-Host "Folder name: $($_.Name)"
}
示例2.如何通过索引访问文件夹并打印其名称:
if($folders.Count -gt 0){
$folder = $folders[0] #get first item
Write-Host "Folder name: $($folder.Name)"
}
第一个答案就可以了。 这是为什么的更多说明。
您已经正确访问了web.Folder属性。 但是,正如前面的答案指出的那样,该行:
$文件夹
是问题。 这是因为,当您将命令作为项目输入时,Powershell会通过打印出该项目的“每个单一”属性来工作。 (Powershell会使用反射来遍历对象的每个单一属性,或类似的东西)。
对于$ folders,某些属性-如format-default(如错误消息所示)未初始化。 因此,当Powershell尝试打印出每个单个属性时,它将失败。
因此,一旦初始化$ folders集合,下一步就是读取特定项目并初始化该项目的属性。
了解Powershell在做什么是关键。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.