从列表Office 365中删除ContentType

时间:2015-07-07 13:43:28

标签: powershell sharepoint powershell-v2.0 office365

我想使用PowerShell从office 365中的列表中删除Content-Type。我找到了这段代码,但$ Doclibrary总是为空。

$lookForList = "Document"
$stringCTRemove = "Your Content type"
        $docLibrary = $_.Lists[$lookForList]


    if($docLibrary -ne $null)
    {
        $ctToRemove = $docLibrary.ContentTypes[$stringCTRemove]
        write-host "Removing content type" $ctToRemove.Name "from list" $docLibrary.Title
        $docLibrary.ContentTypes.Delete($ctToRemove.Id)
        $docLibrary.Update()
    }
    else
    {
        write-host "The list" $lookForList "does not exist in site" $_.Title
    }
}

溶液:

function removeBannersCT ($web)
{
    $listName = "Banners"
    $list = $context.Web.Lists.GetByTitle($listName)
    $context.Load($list)
    $context.ExecuteQuery()
    $stringCTRemove = "Picture"

        if($list -ne $null)
        {
            $lcontentTypes = $list.ContentTypes
            $context.Load($lcontentTypes)
            $context.ExecuteQuery()
            foreach($cts in $lcontentTypes)
            {
                if($cts.Name -eq $stringCTRemove)
                {
                    $list.ContentTypes.GetById($cts.Id).DeleteObject()
                    $list.Update()
                    write-host "Content-Type removed"
                }
            }
        }
        else
        {
            write-host "The list" $listName "does not exist in site"
        }
}

拜托,你能帮助我吗?我疯了!

提前致谢。

1 个答案:

答案 0 :(得分:0)

在这里你解决方案, 有两种方法可以按内容类型ID删除,另一种按内容类型名称删除。

function Set-SPORemoveContentTypeByName {
[cmdletbinding()]
    param (
        [Microsoft.SharePoint.Client.ClientContext]$ctx, 
        [string]$spList,
        [string]$ctName
    )

    $web = $ctx.Web
    $list = $ctx.Web.Lists.GetByTitle($spList)
    $cntTypeColl =$list.ContentTypes
    $ctx.Load($web) 
    $ctx.Load($list)
    $ctx.Load($cntTypeColl)
    $ctx.ExecuteQuery()



    foreach($ct in $cntTypeColl)
    {

    if($ct.Name -eq $ctName)
        {
        $ct.DeleteObject()
        break;
        }
    }

    $ctx.ExecuteQuery()

} 

function Set-SPORemoveContentTypeById {
[cmdletbinding()]
    param (
        [Microsoft.SharePoint.Client.ClientContext]$ctx, 
        [string]$spList,
        [string]$ctId
    )

    $web = $ctx.Web
    $list = $ctx.Web.Lists.GetByTitle($spList)
    $cntTypeColl =$list.ContentTypes
    $ctx.Load($web) 
    $ctx.Load($list)
    $ctx.Load($cntTypeColl)
    $ctx.ExecuteQuery()

  write-host "Required Content Type Id :" $ctId

    foreach($ct in $cntTypeColl)
    {
    write-host "Intertaed ID " $ct.Id


    if($ct.Id.ToString() -eq $ctId)
        {
        $ct.DeleteObject()
        break;
        }
    }

    $ctx.ExecuteQuery()

} 

干杯, 基兰