Búsqueda de sitios web

SharePoint Online: eliminar una columna de sitio del tipo de contenido mediante PowerShell


Requisito: Eliminar una columna de sitio del tipo de contenido en SharePoint Online.

¿Cómo eliminar una columna del tipo de contenido en SharePoint Online?

En esta publicación, le mostraremos cómo eliminar una columna del tipo de contenido en SharePoint Online. Cuando elimina una columna de sitio de un tipo de contenido, no la elimina del sitio de SharePoint Online. Simplemente elimina la asociación de la columna del sitio de la definición del tipo de contenido particular. Para eliminar una columna del tipo de contenido, siga estos pasos:

  1. Vaya a Configuración del sitio >> Tipos de contenido del sitio (si es el nivel de lista, vaya a Configuración de lista).
  2. Elija el tipo de contenido de la página. En la sección de columnas, haga clic en la columna para eliminarla del tipo de contenido.
  3. En la página de cambio de tipo de contenido, haga clic en el botón "Eliminar" y confirme el mensaje para eliminar la columna del tipo de contenido.

SharePoint Online: eliminar una columna del tipo de contenido mediante PowerShell

¿Necesita eliminar una columna de un tipo de contenido en SharePoint Online? ¡PowerShell lo hace fácil! A continuación se explica cómo eliminar una columna del tipo de contenido usando PowerShell:


#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 Remove-ColumnFromContentType()
{ 
    param
    (
        [Parameter(Mandatory=$true)] [string] $SiteURL,
        [Parameter(Mandatory=$true)] [string] $ContentTypeName,
        [Parameter(Mandatory=$true)] [string] $SiteColumnName
    )

    Try {
        $Cred= Get-Credential
        $Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)

        #Setup the context
        $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
        $Ctx.Credentials = $Credentials
    
        #Get the content type from web
        $ContentTypeColl = $Ctx.Web.ContentTypes
        $Ctx.Load($ContentTypeColl)
        $Ctx.ExecuteQuery()
        
        #Check if the content type exists in the site        
        $ContentType = $ContentTypeColl | Where {$_.Name -eq $ContentTypeName}
        If($ContentType -eq $Null)
        { 
            Write-host "Content Type '$ContentTypeName' doesn't exists in '$SiteURL'" -f Yellow
            Return 
        }

        #Get the column to delete from content type
        $ContentTypeFieldColl =  $ContentType.Fields
        $Ctx.Load($ContentTypeFieldColl)
        $Ctx.ExecuteQuery()

        $SiteColumn = $ContentTypeFieldColl | Where {$_.Title -eq $SiteColumnName }
        if($SiteColumn -eq $null)
        {
            Write-host "Site Column '$SiteColumnName' doesn't exists in content Type '$ContentTypeName'" -f Yellow
        }
        else
        {
            #Get the field link from content type
            $FieldLinkColl = $ContentType.FieldLinks
            $Ctx.Load($FieldLinkColl)
            
            #Remove field from content type
            $FieldLink = $FieldLinkColl.GetById($SiteColumn.Id)
            $FieldLink.DeleteObject()
            $ContentType.Update($true)
            $Ctx.ExecuteQuery() 

            Write-host "Site Column '$SiteColumnName' deleted from '$ContentTypeName' successfully!" -ForegroundColor Green
        }
  }
    Catch {
        write-host -f Red "Error Deleting Site Column from Content Type!" $_.Exception.Message
    } 
}

#Set parameter values
$SiteURL="https://crescent.sharepoint.com"
$ContentTypeName="Project Template"
$SiteColumnName="Project Department" #Display Name of the Field

#Call the function
Remove-ColumnFromContentType -SiteURL $SiteURL -ContentTypeName $ContentTypeName -SiteColumnName $SiteColumnName

PnP PowerShell para eliminar columnas del tipo de contenido en SharePoint Online

Si desea eliminar una columna de un tipo de contenido en SharePoint Online, puede usar PnP PowerShell. Le mostraré un ejemplo del uso de PowerShell para eliminar una columna de un tipo de contenido.


#Config Variables
$SiteURL = "https://Crescent.sharepoint.com"
$ContentTypeName ="Crescent Invoice Template V2"
$FieldName ="Project_x0020_Manager"

#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Credentials (Get-Credential)

#Get the Client Context
$Context = Get-PnPContext
 
#Get the content type
$ContentType = Get-PnPContentType -Identity $ContentTypeName

If($ContentType)
{
    #Get the Field from Content type
    $Field = $ContentType.Fields.GetByInternalNameOrTitle($FieldName)
    $Context.Load($Field) 
    $Context.ExecuteQuery() 

    #Remove the Field from content type
    $ContentType.FieldLinks.GetById($Field.Id).DeleteObject() 
    $ContentType.Update($False) #Update children
    $Context.ExecuteQuery()

    Write-host -f Green "Field '$FieldName' has been removed from Content Type!"
}

Alternativamente, puede usar el cmdlet Remove-PnPFieldFromContentType en PnP PowerShell. Aquí es cómo:


Remove-PnPFieldFromContentType -Field $FieldName -ContentType $ContentTypeName

Artículos relacionados