微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用PowerShell更新RootFolder的Properties属性

在开发过程中,经常会将自定义的数据保存到list的RootFolder的属性Propertis中,这个属性一个字典,例如使用如下PowerShell,可以将一个自定义的key “MyTestPropertyKey”,添加到Properties字典中:

 $myweb = Get-SPWeb http://sp2013                                                  //获取站点 
 $mylist = $myweb.Lists["Composed Looks"]                                          //获取列表
 $myList.RootFolder.Properties["MyTestPropertyKey"] = "MyTestPropertieyValue"      //添加key-value
 $myList.RootFolder.Update()                                                       //更新RootFolder

使用SharePoint Manager (SharePoint 2013版本),就可以看到刚刚添加的这个属性



Properties属性只允许保存字符串,整数和日期类型的数据,如果是其他类型,在执行RootFolder.Update()方法的时候,就会报如下错误


“Exception calling "Update" with "0" argument(s): "Only String,INT,and DateTime datetypes can be used as the value in Properties.”

我今天就遇到这个错误了,本打算把本地的一个xml文件中的xml数据保存在Properties中,结果保存的时候出错。

我是使用Get-Content这个powershell命令读取xml文件的:

$xmlValue = Get-Content C:\users\user1\desktop\xmlfile.xml
结果发现Get-Content的返回值$xmlValue的类型是一个Array数组,所以Get-Content这个命令认是一行一行来读文件的。

查看Get-Content的帮助之后发现,如果需要返回字符串,还需要指定 -raw :

$xmlValue = Get-Content -raw C:\users\user1\desktop\xmlfile.xml
这样读取出来的值是字符串类型的:



虽然数据的类型正确了,但是在执行RootFolder.Update()的时候还是会报错:


经过研究发现,虽然返回值是字符串,但是在赋值的时候,还是需要显示转换才行,所以正确的赋值方法应该是:

$xmlValue = Get-Content -raw c:\users\user1\desktop\xmlfile.xml
$myList.RootFolder.Properties["MyTestPropertyKey"] = [System.String]$xmlValue
$myList.RootFolder.Update()

原文地址:https://www.jb51.cc/xml/297129.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。