SharePoint 2010 PowerShell 系列 之 应用总结 (二)
好久没更新文章了,趁闲的时间再总结一下PowerShell。
有的人善于用API创建列表,我觉得用XML结构表示列表更容易理解,所以下面的介绍都是以Xml解构来显示的。
创建列表时,有两个重要的字段DisplayName 和 StaticName,一个是显示名,一个是内部名,在开发时发现如果把DisplayName写成中文,StaticName写成英文,创建列表成功后,StaticName被编码,很显示不是我们想要的答案,也不知是否为微软的Bug。
创建列表字段
View Code
#Add Fields Function AddField($list,$xml,$bool,$fieldOptions){ $list.Fields.AddFieldAsXml($xml,$bool,$fieldOptions) } #代码维护 字段 Function AddListField_Code($web,$list,$listName){ #名称 $CodeNameXml="<Field Type='Text' DisplayName='CodeName' Required = 'TRUE' MaxLength='255' FromBaseType='TRUE'/>" AddField $list $CodeNameXml $true $DefaultViewFieldOptions #上级 $ParentIdXml="<Field Type='Lookup' DisplayName='ParentId' Required = 'FALSE' List='{"+$list.ID+"}' ShowField='CodeName' />" #扩展字段 AddField $list $ParentIdXml $TRUE $DefaultViewFieldOptions $fieldParentId = $list.Fields["ParentId"] $ParentIdCodeNameXml="<Field Type='Lookup' DisplayName='ParentId:CodeName' Required = 'FALSE' List='{"+$list.ID+"}' ShowField='CodeName' FieldRef='{"+$fieldParentId.ID+"}' />" AddField $list $ParentIdCodeNameXml $TRUE $DefaultViewFieldOptions $list.Update() } #代码维护 Function AddList_Code($web){ $listName = "代码维护" $listDescription = "代码维护" DeleteList $web $listName AddList $web $listName $listDescription $GenericListTemp $list = $web.Lists.TryGetList($listName) OnQuickLaunchList $list True AddListField_Code $web $list $listName UpdateDisplayName_Code $list }
一般情况下,我们是要显示中文名称的,有没有办法修改呢,答案是肯定可以修改的,下面是修改的方法
View Code
#Update DisplayName Function UpdateDisplayName($list,$oldName,$newName){ $list.Fields[$oldName].Title = $newName $list.Fields[$oldName].Update() } #代码维护 修改显示名 Function UpdateDisplayName_Code($list){ UpdateDisplayName $list "标题" "代码" UpdateDisplayName $list "CodeName" "名称" UpdateDisplayName $list "ParentId" "上级" }
用PowerShell开发时费时,但是到部署时就知道他的强大,大家慢慢体会就行了。
为了验证上面关于Bug的问题,特意在Sharepoint 2013架构上做了测试,结果还是被编码成<FieldRef Name='_x540d__x79f0_' />不知为什么这样,难道这是别有用意还是本来就是这样呢?