SharePoint Powershell 隐藏List下的Content Type之后 界面操作visible属性失效问题

在SharePoint使用PowerShell隐藏List的ContentType后,界面中New Document Button的Content Type显示未按预期更新。解决方案是先通过PowerShell设置$ct.Hidden = $false使其可见,然后手动调整Content Type的visible属性。注意避免直接用PowerShell隐藏List的ContentType,但可以调整默认显示顺序。
摘要由CSDN通过智能技术生成

最近在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的显示顺序

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值