用于更新SharePoint Online列表项的PowerShell脚本未保存所有列值



我正在处理一个CSV文件,以创建SharePoint Online列表项并将元数据保存为其自定义内容类型中的字段。起初,我认为这将是一个与列类型有关的问题,但我未能保存一些简单的文本字段值。令人困惑的是,我可以保存一些字段,但不能保存其他字段——尽管我使用了相同的方法来保存——但不知何故,列表项并没有保留我为列表项更新发送的所有值。

我用以下代码创建了一个新项目:

$newFile = $targetfolderObj.Files.Add($FileCreationInfo)
$targetContext.Load($newFile)
$spContext.ExecuteQuery()

然后我得到列表项并开始设置字段值

$newFileListItem = $newFile.ListItemAllFields
$newFileListItem.Properties["ColumnNameA"] = $_.CustomValue1 # saves
$newFileListItem.Properties["ColumnNameB"] = $_.CustomValue2 # not saving !!!
$newFileListItem.Properties["ColumnNameC"] = $_.CustomValue3 # saves

在用值设置属性之后,我调用update并执行函数。

$newFileListItem.Update()
$spContext.ExecuteQuery()

$.CustomValue1$.CustomValue2$CustomValue3打印时全部读作";你好"例如,这里没有特殊的字符或符号-即使将字段值硬编码为简单的字符串,也无法更新字段2,但适用于1和3。

我用我的代码给出了这个例子,以表明它不是顺序的——例如,字段2的数据没有保存,但字段1和3的数据保存了。

它总是在相同的列上失败,我验证了列的存在,我使用了内部字段名,字符串长度在范围内,并且没有对这些列应用其他验证。我能做些什么来解决这个问题?

经过大量调试,我看到了SharePoint的乐趣。。。

而内容类型在那里并且内容类型内部字段名称是"0";ColumnNameA";库实例中一定出现了问题,导致列名现在为";ColumnNameA0";是的,在列名的末尾加了一个零。每一个没有更新的列现在都有一个";零";位于内部列名的末尾。

解决方案1:加零解决方案2:重新创建库并将其与站点内容类型重新关联

我使用解决方案1来测试我的更新是否有效,然后重建了库。

相关内容

  • 没有找到相关文章

最新更新