SharePoint Online: PowerShell'i kullanarak Listeye veya Belge Kitaplığına İçerik Türü Ekleme


Gereksinim: Kitaplığa bir içerik türü eklemek için SharePoint Online PowerShell.

SharePoint Online'daki bir listeye veya kitaplığa içerik türü nasıl eklenir?

SharePoint Online'da, listede depolanan bilgi türünü tanımlamaya yardımcı olmak için listeye içerik türleri ekleyebilirsiniz. Örneğin, ürün bilgilerinin saklandığı bir listeye "Ürün" için bir içerik türü ekleyebilirsiniz. Bu, listede otomatik olarak "Ürün" içerik türüyle ilişkilendirilen yeni öğeler oluşturmanıza olanak tanır. Bu makale, SharePoint Online'daki bir listeye nasıl içerik türü ekleyeceğinizi gösterecektir.

İçerik türünün zaten oluşturulduğunu varsayarsak, SharePoint Online'daki listeye içerik türü ekleme adımları aşağıda verilmiştir:

1. Adım: Henüz etkinleştirilmemişse, liste için içerik türleri yönetimini etkinleştirin

Bir listeye veya kitaplığa içerik türü eklemeden önce listenin veya kitaplığın içerik türlerini desteklemesini etkinleştirmeniz gerekir.

  1. Liste ayarlarına gidin >> Genel Ayarlar altındaki “Gelişmiş Ayarlar” bağlantısına tıklayın.
  2. “İçerik türlerinin yönetimine izin verilsin mi?” seçeneğini “Evet” olarak ayarlayın. seçeneğini seçin ve değişikliklerinizi kaydetmek için sayfanın altındaki Tamam düğmesine basın.

2. Adım: İçerik Türünü Listeye veya Kitaplığa Ekleme

İçerik türleri etkinleştirildikten sonra, SharePoint Online'daki bir listeye veya kitaplığa içerik türünü şu şekilde ekleyebilirsiniz:

  1. Liste ayarları sayfasına tekrar gidin. Varsayılan içerik türüyle oluşturulmuş "İçerik Türleri" grubunun listelendiğini göreceksiniz (Örneğin, özel listeler için "Öğe" içerik türünün listelendiğini göreceksiniz).
  2. “Mevcut site içerik türlerinden ekle” bağlantısını tıklayın.

  3. İçerik türleri ekle sayfasından, eklenecek içerik türünüzü seçin ve “Ekle” düğmesine ve ardından bir kez “Tamam”a tıklayın.

  4. Bu kadar. Artık eklediğiniz içerik türünü liste ayarlarının “İçerik Türleri” grubunun altında bulacaksınız.

Peki. Şimdi PowerShell kullanarak SharePoint Online'daki bir listeye nasıl içerik türü ekleyeceğimizi görelim.

İçerik Türünü Kitaplığa Eklemek için SharePoint Çevrimiçi PowerShell

PowerShell kullanarak SharePoint Online'daki listeye bir içerik türü ekleyelim:


#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 Add-ContentTypeToList()
{ 
    param
    (
        [Parameter(Mandatory=$true)] [string] $SiteURL,
        [Parameter(Mandatory=$true)] [string] $ListName,
        [Parameter(Mandatory=$true)] [string] $CTypeName
    )

    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 List
        $List = $Ctx.web.Lists.GetByTitle($ListName)
        $Ctx.Load($List)
        $Ctx.ExecuteQuery()
        
        #Enable managemnt of content type in list - if its not enabled already
        If($List.ContentTypesEnabled -ne $True)
        {
            $List.ContentTypesEnabled = $True
            $List.Update()
            $Ctx.ExecuteQuery()
            Write-host "Content Types Enabled in the List!" -f Yellow
        }

        #Get all existing content types of the list
        $ListContentTypes = $List.ContentTypes
        $Ctx.Load($ListContentTypes)

        #Get the content type to Add to list
        $ContentTypeColl = $Ctx.Web.ContentTypes
        $Ctx.Load($ContentTypeColl)
        $Ctx.ExecuteQuery()
        
        #Check if the content type exists in the site        
        $CTypeToAdd = $ContentTypeColl | Where {$_.Name -eq $CTypeName}
        If($CTypeToAdd -eq $Null)
        { 
            Write-host "Content Type '$CTypeName' doesn't exists in  '$SiteURL'" -f Yellow
            Return 
        }

        #Check if content type added to the list already
        $ListContentType = $ListContentTypes | Where {$_.Name -eq $CTypeName}
        If($ListContentType -ne $Null)
        {
            Write-host "Content type '$CTypeName' already exists in the List!" -ForegroundColor Yellow
        }
        else
        {
            #Add content Type to the list or library
            $AddedCtype = $List.ContentTypes.AddExistingContentType($CTypeToAdd)
            $Ctx.ExecuteQuery()
           
            Write-host "Content Type '$CTypeName' Added to '$ListName' Successfully!" -ForegroundColor Green
        }
   }
    Catch {
        write-host -f Red "Error Adding Content Type to the List!" $_.Exception.Message
    } 
}

#Set parameter values
$SiteURL="https://crescent.sharepoint.com"
$ListName="Project Frosty"
$CTypeName="Project Template"

#Call the function
Add-ContentTypeToList -SiteURL $SiteURL -ListName $ListName -CTypeName $CTypeName

SharePoint Online PnP PowerShell, İçerik Türünü Kitaplığa Eklemek İçin

Add-PnPContentTypeToList PnP PowerShell'i kullanarak SharePoint Online'daki belge kitaplığına içerik türünü nasıl ekleyeceğiniz aşağıda açıklanmıştır:


#Config Variables
$SiteURL = "https://Crescent.sharepoint.com/sites/marketing"
$ContentTypeName="Crescent Invoice Template V2"
$ListName="Invoices"

#Get Credentials to connect
$Cred = Get-Credential

#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Credentials $Cred
    
#Get the content type
$ContentType = Get-PnPContentType -Identity $ContentTypeName

If($ContentType)
{
    #Add Content Type to Library
    Add-PnPContentTypeToList -List $ListName -ContentType $ContentType
}
else
{
    Write-host -f Yellow "Could Not Find Content Type:"$ContentTypeName
}

İçerik türünü varsayılan içerik türü yapmak için -DefaultContentType anahtarını kullanın! Koda bazı hata işleme eklemeye ne dersiniz: Verilen listenin mevcut olup olmadığını kontrol etmek, içerik türünün listeye önceden eklenip eklenmediğini kontrol etmek vb.


#Parameters
$SiteURL = "https://crescent.sharepoint.com/sites/Purchase"
$ListName = "Site Pages"
$ContentTypeName = "Site Page"

Try {
    #Connect to SharePoint Online site
    Connect-PnPOnline -Url $SiteURL -UseWebLogin

    #Get the context
    $Ctx = Get-PnPContext

    #Check if the List or Library Exists
    $List = Get-PnPList -Identity $ListName
    If($List -ne $Null)
    {
        #Add Content type to the list
        $ContentType = Get-PnPContentType -Identity $ContentTypeName
        If($ContentType)
        {
            #Check if the List has the content type already
            $ListContentType = Get-PnPContentType -List $ListName -Identity $ContentTypeName -ErrorAction SilentlyContinue
            If(!$ListContentType)
            {
                #Add Content Type to List
                Add-PnPContentTypeToList -List $ListName -ContentType $ContentType
                Write-host  -f Green "'$ContentTypeName' content type added to the List '$ListName'"
            }
            Else
            {
                Write-host -f yellow "'$ContentTypeName' content type already exists in the List!"
            }
        }
        Else
        {
            Write-host -f Yellow "Could Not Find the '$ContentTypeName' Content Type!"
        }
    }
    Else
    {
        Write-Host -f Yellow "List '$ListName' does not exist!"
    }
}
Catch {
    Write-host -f Red "Error:" $_.Exception.Message
}

İlgili makaleler