加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用PowerShell更新RootFolder的Properties属性

发布时间:2020-12-16 09:15:44 所属栏目:百科 来源:网络整理
导读:在开发过程中,经常会将自定义的数据保存到list的RootFolder的属性Propertis中,这个属性是一个字典,例如使用如下PowerShell,可以将一个自定义的key “MyTestPropertyKey”,添加到Properties字典中: $myweb = Get-SPWeb http://sp2013 //获取站点 $mylis

在开发过程中,经常会将自定义的数据保存到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:usersuser1desktopxmlfile.xml
结果发现Get-Content的返回值$xmlValue的类型是一个Array数组,所以Get-Content这个命令默认是一行一行来读文件的。

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

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



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


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

$xmlValue = Get-Content -raw c:usersuser1desktopxmlfile.xml
$myList.RootFolder.Properties["MyTestPropertyKey"] = [System.String]$xmlValue
$myList.RootFolder.Update()

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读