【问题标题】:Reading Sharepoint List Calculated field from PowerShell从 PowerShell 读取 Sharepoint 列表计算字段
【发布时间】: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


【解决方案1】:

您在这里基本上有两个选择。您可以让 Powershell 为您进行计算,考虑到计算的基本性质,这可能是两个选项中更简单的一个。

第二个选项,如帖子末尾所述,是创建一个可以存储计算结果的新字段。在您的情况下,您可以将其称为状态。然后,您将创建一个工作流,该工作流在更新或创建将计算字段的结果存储在结果字段中的列表项时运行。如果您拥有此字段只是为了在 PowerShell 脚本中使用计算字段的值,这对我来说似乎是多余的。

【讨论】:

  • 感谢 powershell 的计算思路。我只是将该变量设置为 if else 命令。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-27
相关资源
最近更新 更多