我想使用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"
}
}
拜托,你能帮助我吗?我疯了!
提前致谢。
答案 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()
}
干杯, 基兰