SharePoint Online: eliminar un tipo de contenido de todas las listas en una colección de sitios mediante PowerShell
Requisito: Eliminar el tipo de contenido de todas las listas y bibliotecas en una colección de sitios de SharePoint Online.
PowerShell para eliminar el tipo de contenido de todas las listas y bibliotecas de una colección de sitios
En SharePoint Online, puede haber ocasiones en las que desee eliminar un tipo de contenido de todas las listas de una colección de sitios. Por ejemplo, tal vez haya creado un tipo de contenido y luego se haya dado cuenta de que no era la mejor opción, o desee evitar que los usuarios agreguen elementos de ese tipo a las listas del sitio. Esto se puede hacer manualmente a través de la interfaz de usuario de SharePoint, pero puede llevar mucho tiempo. En esta publicación, le mostraré cómo eliminar un tipo de contenido de todas las listas de una colección de sitios usando PowerShell.
Este script de PowerShell recorre en iteración todas las listas y bibliotecas de una colección de sitios determinada, busca el tipo de contenido proporcionado y lo elimina si alguno de los elementos subyacentes no lo utiliza.
#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
#Function to remove content type from a site collection
Function Remove-SPOContentType([String]$SiteURL, [String]$ContentTypeName)
{
Try{
Write-host -f Yellow "Processing Site:" $SiteURL
#Setup the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
#Get All Lists of the Web
$Ctx.Load($Ctx.Web)
$Ctx.Load($Ctx.Web.Lists)
$Ctx.Load($ctx.Web.Webs)
$Ctx.ExecuteQuery()
#Get content types of each list from the web
ForEach($List in $Ctx.Web.Lists)
{
$ContentTypes = $List.ContentTypes
$Ctx.Load($ContentTypes)
$Ctx.ExecuteQuery()
#Get each content type data
ForEach($CType in $ContentTypes)
{
If($CType.Name -eq $ContentTypeName)
{
Try{
#Remove Content Type from List
$CType.DeleteObject()
$Ctx.ExecuteQuery()
Write-host -f Green "Removed Content Type from List/Library:" $List.Title
}
Catch {
write-host -f Red "`tError Removing Content Type from '$($List.Title)' :" $_.Exception.Message
}
}
}
}
#Iterate through each subsite of the current web and call the function recursively
foreach ($Subweb in $Ctx.web.Webs)
{
#Call the function recursively to process all subsites underneaththe current web
Remove-SPOContentType $Subweb.url $ContentTypeName
}
}
Catch {
write-host -f Red "Error Removing Content Type:" $_.Exception.Message
}
}
#Config Parameters
$SiteURL="https://crescent.sharepoint.com/sites/marketing"
$ContentTypeName="Project Proposal"
#Get Credentials to connect
$Cred= Get-Credential
#Call the function to get the content type usage
Remove-SPOContentType -SiteURL $SiteURL -ContentTypeName $ContentTypeName
Este método es más rápido y eficaz que eliminar manualmente tipos de contenido de las listas a través de la interfaz de usuario. Al utilizar PowerShell, puede automatizar el proceso y garantizar que los tipos de contenido se eliminen de manera consistente en todas las listas de una colección de sitios.
Artículos Relacionados:
- SharePoint Online: eliminar el tipo de contenido de la lista mediante PowerShell
- SharePoint Online: busque el uso del tipo de contenido en una colección de sitios mediante PowerShell