Recherche de site Web

SharePoint Online : supprimer une colonne de site du type de contenu à l'aide de PowerShell


Exigence : supprimez une colonne de site du type de contenu dans SharePoint Online.

Comment supprimer une colonne du type de contenu dans SharePoint Online ?

Dans cet article, nous allons vous montrer comment supprimer une colonne du type de contenu dans SharePoint Online. Lorsque vous supprimez une colonne de site d'un type de contenu, cela ne la supprime pas du site SharePoint Online. Cela supprime simplement l’association de la colonne du site de la définition du type de contenu particulier. Pour supprimer une colonne du type de contenu, procédez comme suit :

  1. Accédez à Paramètres du site >> Types de contenu du site (s'il s'agit du niveau Liste, accédez aux Paramètres de la liste).
  2. Choisissez le type de contenu sur la page, Dans la section colonnes, Cliquez sur la colonne à supprimer du type de contenu.
  3. Dans la page de changement de type de contenu, cliquez sur le bouton « Supprimer » et confirmez l'invite pour supprimer la colonne du type de contenu.

SharePoint Online : supprimer une colonne du type de contenu à l'aide de PowerShell

Devez-vous supprimer une colonne d’un type de contenu dans SharePoint Online ? PowerShell facilite les choses ! Voici comment supprimer une colonne du type de contenu à l’aide de 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 pour supprimer une colonne du type de contenu dans SharePoint Online

Si vous souhaitez supprimer une colonne d'un type de contenu dans SharePoint Online, vous pouvez utiliser PnP PowerShell ! Je vais vous montrer un exemple d'utilisation de PowerShell pour supprimer une colonne d'un type de contenu.


#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!"
}

Vous pouvez également utiliser la cmdlet Remove-PnPFieldFromContentType dans PnP PowerShell. Voici comment:


Remove-PnPFieldFromContentType -Field $FieldName -ContentType $ContentTypeName

Articles connexes