SharePoint Online: PowerShell kullanarak İçerik Türüne Site Sütunu Nasıl Eklenir?


Gereksinim: PowerShell'i kullanarak SharePoint Online'daki içerik türüne site sütunu ekleyin.

SharePoint'te mevcut bir içerik türüne alan nasıl eklenir?

Site sütunları içerik türlerine, listelere ve kitaplıklara eklenebilen yeniden kullanılabilir alanlardır. İçerik türlerinize site sütunları ekleyerek bilgilerinizi oluşturmayı ve yönetmeyi kolaylaştırabilirsiniz. Bu blog gönderisinde, SharePoint Online'daki bir içerik türüne site sütunu ekleme sürecinde size yol göstereceğiz. Ayrıca, SharePoint Online'daki bir içerik türüne site sütunu eklemek için kullanabileceğiniz bir PowerShell betiği de sağlayacağız.

Varsayılan olarak Başlık sütunu içerik türüne eklenir. Ancak ek sütunlar eklemek isteyebilirsiniz.

  1. Site içerik türüne sütun eklemek istediğiniz SharePoint Online sitesine gidin.
  2. “Ayarlar” dişlisine tıklayın >> “Site Ayarları”na tıklayın.
  3. Site Ayarlarında Web Tasarımcısı Galerileri bölümünün altındaki “Site içerik türleri”ne tıklayın
  4. Değiştirilecek hedef içerik türünüzü seçin. Site içerik türleri sayfasında Sütunlar bölümünün altında “Mevcut site sütunlarından ekle” bağlantısına tıklayın.

  5. Bu sizi mevcut bir site sütununu seçebileceğiniz bir sayfaya götürür. Uygun grubu seçin ve eklemek istediğiniz site sütununu seçin ve ardından sütunu "Eklenecek sütunlar" listesine taşımak için "Ekle"yi tıklayın.

PowerShell kullanarak SharePoint Online'da bir içerik türüne nasıl sütun ekleneceğini görelim.

SharePoint Online'da İçerik Türüne Site Sütunu Eklemek için PowerShell:

PowerShell, SharePoint Online'daki görevleri otomatikleştirmenin harika bir yoludur. Mevcut içerik türüne PowerShell ile programlı olarak bir sütun 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-SiteColumnToContentType()
{ 
    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
        $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 site column to add
        $SiteColumnColl = $Ctx.Web.Fields
        $Ctx.Load($SiteColumnColl)
        $Ctx.ExecuteQuery()
        $SiteColumn = $SiteColumnColl | Where {$_.Title -eq $SiteColumnName}
    
        #Check if given site column exists
        if($SiteColumn -eq $Null)
        {
            Write-host "Site Column '$SiteColumnName' doesn't exists!" -f Yellow
            Return
        }
        else
        {
            #Check if site column already added to the content type
            $FieldCollection = $ContentType.Fields
            $Ctx.Load($FieldCollection)
            $Ctx.ExecuteQuery()
            $Field = $FieldCollection | Where {$_.Title -eq $SiteColumnName}
            if($Field -ne $Null)
            {
                Write-host "Site Column '$SiteColumnName' Already Exists in the content type!" -f Yellow
                Return
            }
    
            #Add a field to content type
            $FieldLink = New-Object Microsoft.SharePoint.Client.FieldLinkCreationInformation
            $FieldLink.Field = $SiteColumn
            [Void]$ContentType.FieldLinks.Add($FieldLink)
            $ContentType.Update($true)
            $Ctx.ExecuteQuery() 
       
            Write-host "Site Column '$SiteColumnName' Added to '$ContentTypeName' Successfully!" -ForegroundColor Green
        }
   }
    Catch {
        write-host -f Red "Error Adding Site Column to Content Type!" $_.Exception.Message
    } 
}

#Set parameter values
$SiteURL="https://crescent.sharepoint.com"
$ContentTypeName="ProjectTemplate"
$SiteColumnName="Project Title"

#Call the function
Add-SiteColumnToContentType -SiteURL $SiteURL -ContentTypeName $ContentTypeName -SiteColumnName $SiteColumnName

Aynı sütunu birçok içerik türüne eklemeniz gerekiyorsa bu yararlı olabilir.

İçerik Türüne Site Sütunu Eklemek için PnP PowerShell

PnP PowerShell kullanarak SharePoint Online'daki içerik türüne site sütununun nasıl ekleneceği aşağıda açıklanmıştır:


#Config Variables
$SiteURL = "https://Crescent.sharepoint.com"
$ContentTypeName = "Crescent Project V2"
$SiteColumnName = "Project_x0020_Manager" #Internal Name

#Get Credentials to connect
$Cred = Get-Credential

Try {
    #Connect to PnP Online
    Connect-PnPOnline -Url $SiteURL -Credentials $Cred
    
    #Add Field to Content type
    Add-PnPFieldToContentType -Field $SiteColumnName -ContentType $ContentTypeName
}
catch {
    write-host "Error: $($_.Exception.Message)" -foregroundcolor Red
}

İlgili makaleler