List 正在从PowerShell读取Sharepoint列表计算字段

List 正在从PowerShell读取Sharepoint列表计算字段,list,sharepoint,List,Sharepoint,我正在尝试从SharePoint列表中提取数据。该字段是一个计算列,接受“是”或“否”回答,并将单词更改为“已存档”和“未存档”。 我可以在IE的计算列中看到数据格式正确,但当我尝试提取数据时,在检查变量数据时,它显示为空 $site = get-spsite https://extranet./sites/site $web = get-spweb -Identity https://extranet/sites/site $list=$web.getlist("https://extrane

我正在尝试从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#存档'

但是当我检查$mailboxdb时,它是空的

找到了这个,但我不知道存储结果意味着什么

在Powershell中,尽管您可以引用脚本中列表中的任何字段,但您只能比较“静态”字段中的检索值,也就是说,您不能使用计算字段。PowerShell不会抱怨-但您不会在脚本中得到结果。这是因为.Net Sharepoint库不会为您进行字段计算-这只发生在Sharepoint UI本身内部


如果需要访问“计算”字段,实际上需要有两个字段-计算字段(通常隐藏)和“存储结果”字段,必须根据“更新”工作流最后一步中的计算值进行更新。然后,您可以使用PowerShell中的“存储值”字段,顺便说一句,也可以在Sharepoint中的视图计算中使用。

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


第二个选项,正如在文章末尾提到的,是创建一个新字段,用于存储计算结果。在你的情况下,你可以称之为状态。然后,您将创建一个工作流,该工作流在更新或创建列表项时运行,该列表项将计算字段的结果存储在结果字段中。如果在PowerShell脚本中使用计算字段的值而没有其他原因,则此字段对我来说似乎是多余的。

PS C:\Windows\system32>$mailboxdb=$listitem.GetFormattedValue(“mailboxdb”)异常调用带有“1”参数的“GetFormattedValue”:“列“mailboxdb”不存在。它可能已被其他用户删除。”第1行字符:1+$mailboxdb=$listitem.GetFormattedValue(“mailboxdb”)+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~,parentContainesErrorRecordException+FullyQualifiedErrorId:ArgumentExceptionTanks用于powershell计算思想。我刚刚将该变量设置为if-else命令。