【发布时间】:2014-07-14 14:47:12
【问题描述】:
我正在尝试从 SharePoint 列表中提取数据。该字段是一个计算列,它接受是或否的答案并将单词更改为已归档和未归档。 我可以在 IE 的计算列中看到数据的格式正确,但是当我尝试提取数据时,当我检查变量数据时它显示为空。
$site = get-spsite https://extranet./sites/site
$web = get-spweb -Identity https://extranet/sites/site
$list=$web.getlist("https://extranet/sites/site/lists/List");
$View = $list.Views["LISTVIEW"]
$listitems = $list.Getitems($view)
foreach ($listitem in $listitems) {
我也试过这个,但得到一个索引空变量错误。
$mailboxdb = $listitem.Fields["mailboxdb"] -as [Microsoft.SharePoint.SPFieldCalculated];
$mailboxdb.GetFieldValueAsText($listitem["mailboxdb"]);
我在 $listitems 输出中也看到了这一点。 ows_MailboxDb='string;#Archived'
但是当我检查 $mailboxdb 时它是空的。
找到了这个,但我不知道存储结果是什么意思。
在 Powershell 中,尽管您可以在脚本中引用列表中的任何字段,但您只能比较“静态”字段中的检索值 - 也就是说,您不能使用计算字段。 PowerShell 不会抱怨 - 但您不会在脚本中得到结果。这是因为 Sharepoint 的 .Net 库不会为您进行字段计算 - 这只发生在 Sharepoint UI 本身内。
如果您需要访问“计算”字段,您实际上需要有两个字段 - 计算字段(通常是隐藏的)和“存储结果”字段,必须从最后的计算值更新“更新”工作流程的步骤。然后,您可以在 PowerShell 中使用“存储值”字段 - 顺便说一下,在 Sharepoint 中查看计算。
【问题讨论】:
-
PS C:\Windows\system32> $mailboxdb = $listitem.GetFormattedValue("mailboxdb") 使用“1”参数调用“GetFormattedValue”的异常:“列 'mailboxdb' 不存在. 它可能已被其他用户删除。在 line:1 char:1 + $mailboxdb = $listitem.GetFormattedValue("mailboxdb") + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], ParentContainsErrorRecordException + FullyQualifiedErrorId : ArgumentException
标签: list sharepoint