Sharepoint 更新「;“外部内容类型”;使用PowerShell的SPList上的字段

Sharepoint 更新「;“外部内容类型”;使用PowerShell的SPList上的字段,sharepoint,powershell,Sharepoint,Powershell,我有一个简单的文档库,它链接到一个名为“事件”的外部内容类型(查找)。 下面是我在列表中循环的PS脚本: $spListItems = $spList.GetItems($spQuery) foreach ($item in $spListItems) { $item["Title"] = "New Title" $item["Events"] ="Event Name" $item.Update() } 所以,“标题”列可以很好地更新,但是

我有一个简单的文档库,它链接到一个名为“事件”的外部内容类型(查找)。 下面是我在列表中循环的PS脚本:

$spListItems = $spList.GetItems($spQuery)
foreach ($item in $spListItems)
{
      $item["Title"] = "New Title" 
      $item["Events"] ="Event Name"
      $item.Update()      
} 
所以,“标题”列可以很好地更新,但是我不知道我需要做什么才能正确地更新“事件”列,因为它是ext内容类型。奇怪的是,这甚至不会引发错误,但在编辑模式下该列为空。关于如何处理这个问题有什么想法吗? Thx.

外部内容类型表示来自外部系统的数据。并非所有外部内容类型都是可写的(更新、删除、创建)-这取决于它们的定义方式。这个CT代表什么?您是否验证了它在BCS(业务连接服务)层中的定义

作为示例,请阅读如何配置外部内容类型以表示SQL表。它说明了在设计外部CTs时,“写回”外部系统的能力是如何明确的一步

如何:基于SQL Server表创建外部内容类型

UDPATE

实际上,再次阅读您的问题,您实际上并没有尝试更新外部数据,您只是尝试在查找中修改所选的值。嗯,那有点不同。查找由实际值和显示字符串组成。需要设置的值不是显示字符串,而是以下形式的值:

ID;#VALUE
其中,
ID
是查找列表中的外键,通常是一个数字,
是显示值,例如“事件名称”,在您的情况下,您需要类似以下内容:

$item["Events"] = "45;#Event Name"
您应该首先读取当前值来验证格式

希望这有帮助。

外部内容类型表示来自外部系统的数据。并非所有外部内容类型都是可写的(更新、删除、创建)-这取决于它们的定义方式。这个CT代表什么?您是否验证了它在BCS(业务连接服务)层中的定义

作为示例,请阅读如何配置外部内容类型以表示SQL表。它说明了在设计外部CTs时,“写回”外部系统的能力是如何明确的一步

如何:基于SQL Server表创建外部内容类型

UDPATE

实际上,再次阅读您的问题,您实际上并没有尝试更新外部数据,您只是尝试在查找中修改所选的值。嗯,那有点不同。查找由实际值和显示字符串组成。需要设置的值不是显示字符串,而是以下形式的值:

ID;#VALUE
其中,
ID
是查找列表中的外键,通常是一个数字,
是显示值,例如“事件名称”,在您的情况下,您需要类似以下内容:

$item["Events"] = "45;#Event Name"
您应该首先读取当前值来验证格式


希望这能有所帮助。

经过一些自我反省之后,我似乎只需要更新我通过循环$splist.Fields找到的列[“Events2\u ID”]。然后,我必须使用外部列表中的[“BDC标识”]值更新此字段。解决了

经过一番自我反省之后,我似乎不得不更新我通过循环$splist.Fields找到的列[“Events2_ID”]。然后,我必须使用外部列表中的[“BDC标识”]值更新此字段。解决了

在我的场景中,我可以通过简单的Powershell$item[“BCSCol”]=“NewValue”设置可见的BCS外部数据列,但也必须设置隐藏字段以使更改可见。有趣的是,该值不必是任何特定的,因为在更改隐藏值后,SP似乎会通过$item[“BCSCol”]验证文本值集

不确定是否支持此方法,但它确实有效

这里有一个有帮助的链接

对于我的场景,我可以通过简单的Powershell$item[“BCSCol”]=“NewValue”设置可见的BCS外部数据列,但也必须设置隐藏字段以使更改可见。有趣的是,该值不必是任何特定的,因为在更改隐藏值后,SP似乎会通过$item[“BCSCol”]验证文本值集

不确定是否支持此方法,但它确实有效

这里有一个有帮助的链接