最近在SharePoint powershell的测试的时候遇到一个问题,调用powershell基本如下
$List = $Web.GetList($Url)
$ctlist=New-Object System.Collections.Generic.List[Microsoft.SharePoint.SPContentType]
#$List.RootFolder.UniqueContentTypeOrder = $null
#List.RootFolder.Update()
foreach($ct in $List.ContentTypes)
{
if ($ct.Name -eq $ContentTypeName)
{
$ctlist.Add($ct)
break
}
}
foreach($ct in $List.ContentTypes)
{
if ($ct.Name -ne $ContentTypeName -and $ct.Name -ne 'Folder')
{
$ctlist.Add($ct)
$ct.Hidden = $true
$ct.Update($false)
}
}
#set as default content type
$List.RootFolder.UniqueContentTypeOrder = $ctlist
$List.RootFolder.Update()
在list中执行完成之后, 在SharePoint List中设置ContentType的visible属性,设置完成之后发现SharePoint界面上New Document Button下拉框中并没有出现设置为visible的Content Type,经过一段时间测试之后,发现执行 $ct.Hidden之后,在SharePoint List Settings页面set visible的时候不会生效,解决方案如下:
$List = $Web.GetList($Url)
$ctlist=New-Object System.Collections.Generic.List[Microsoft.SharePoint.SPContentType]
#$List.RootFolder.UniqueContentTypeOrder = $null
#List.RootFolder.Update()
foreach($ct in $List.ContentTypes)
{
if ($ct.Name -eq $ContentTypeName)
{
$ctlist.Add($ct)
break
}
}
foreach($ct in $List.ContentTypes)
{
if ($ct.Name -ne $ContentTypeName -and $ct.Name -ne 'Folder')
{
$ctlist.Add($ct)
$ct.Hidden = $false
$ct.Update($false)
}
}
#set as default content type
$List.RootFolder.UniqueContentTypeOrder = $ctlist
$List.RootFolder.Update()
修改的地方为 $ct.Hidden = $false , 通过powershell将content type设置为visible, 之后再手动设置content的visible或者hidden即可。
针对Powershell设置default content type以及content type的显示以及隐藏重点关注一下API:
$ct.Hidden
$List.RootFolder.UniqueContentTypeOrder
尽量不要通过Powershell去隐藏 List下的Content Type,但是可以设置Default Content Type以及Content Type的显示顺序