使用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:usersuser1desktopxmlfile.xml结果发现Get-Content的返回值$xmlValue的类型是一个Array数组,所以Get-Content这个命令默认是一行一行来读文件的。 查看Get-Content的帮助之后发现,如果需要返回字符串,还需要指定 -raw : $xmlValue = Get-Content -raw C:usersuser1desktopxmlfile.xml这样读取出来的值是字符串类型的:
经过研究发现,虽然返回值是字符串,但是在赋值的时候,还是需要显示转换才行,所以正确的赋值方法应该是: $xmlValue = Get-Content -raw c:usersuser1desktopxmlfile.xml $myList.RootFolder.Properties["MyTestPropertyKey"] = [System.String]$xmlValue $myList.RootFolder.Update() (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |