SharePoint Online: PowerShell kullanarak İçerik Türündeki Bir Sütunu Nasıl Gizleyebilirim?


Gereksinim: SharePoint Online'da İçerik Türünden Bir Sütunu Gizleyin.

SharePoint Online'da İçerik türlerini kullanarak Sütun Nasıl Gizlenir?

Sütunlar, SharePoint'te içerik türünde veya liste düzeyinde gizlenebilir. İçerik türünü kullanarak bir sütunun NewForm.aspx, EditForm.aspx, DispForm.asxp gibi liste formlarında görünmesini gizleyebilirsiniz. Öncelikle şu adrese giderek içerik türünü etkinleştirin:

  • Liste Ayarları >> Gelişmiş Ayarlar >> seçeneğine gidin ve "İçerik türlerinin yönetimine izin ver" onay kutusunu etkinleştirin.

İçerik türleri etkinleştirildikten sonra o içerik türünün herhangi bir alanını gizleyebilirsiniz.

  • Tekrar Liste Ayarlarına gidin >> İçerik Türleri altında, Öğe içerik türüne (veya uygun içerik türüne) tıklayın.
  • Sütunlar grubunun altındaki Başlık sütununa (veya gizlemek istediğiniz sütuna) tıklayın >> “Gizli” seçeneğine tıklayın.

Belirli bir sütun yukarıda listelenen formların hiçbirinde görünmez. Ayrıca sütunu liste görünümlerinden kaldırarak "Görünümler"den de kaldırabilirsiniz.

SharePoint Online'daki Liste İçerik Türünden bir Sütunu gizlemek için PowerShell:

PowerShell'i kullanarak SharePoint Online'daki içerik türünden bir sütunu nasıl gizleyeceğinizi size göstereyim.


#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 Hide Column From List Content Type in SharePoint Online
Function Hide-ColumnFromContentType()
{ 
    param
    (
        [Parameter(Mandatory=$true)] [string] $SiteURL,
        [Parameter(Mandatory=$true)] [string] $ListName,
        [Parameter(Mandatory=$true)] [string] $ContentTypeName,
        [Parameter(Mandatory=$true)] [string] $ColumnName
    )

    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()

        #Get the content type
        $ContentTypes = $List.ContentTypes
        $Ctx.Load($ContentTypes)
        $Ctx.ExecuteQuery()
        $ContentType = $ContentTypes | Where {$_.Name -eq $ContentTypeName}

        #Get the Field link from content type
        $FieldLinks =$ContentType.FieldLinks
        $Ctx.Load($FieldLinks)
        $Ctx.ExecuteQuery()
        $FieldLink = $FieldLinks | Where {$_.Name -eq $ColumnName}

        #Hide the Field link
        $FieldLink.Hidden = $True
        
        #Update Content type
        $ContentType.update($False)
        $Ctx.ExecuteQuery()

        Write-host "Column Hidden from the Content Type Successfully!" -ForegroundColor Green  
    }
    Catch {
        write-host -f Red "Error Hiding Column in Content Type!" $_.Exception.Message
    } 
} 

#Set parameter values
$SiteURL="https://crescent.sharepoint.com"
$ListName="Projects"
$ContentTypeName="Item"
$ColumnName="Priority"

#Call the function 
Hide-ColumnFromContentType -SiteURL $SiteURL -ListName $ListName -ContentTypeName $ContentTypeName -ColumnName $ColumnName

Alanın "Gizli" olarak ayarlanması, alanın tüm liste formlarından gizlenmesini sağlar. Bunun yerine, sütunu aşağıdakileri kullanarak görüntüleme formu gibi belirli formlardan gizleyebilirsiniz:


 $FieldLink.ShowInDisplayForm = $false 

SharePoint Online: PnP PowerShell'i Kullanarak Liste İçerik Türünde Bir Sütunu Gizleme

İçerik türünün verilen listeye zaten eklendiğini varsayarsak, içerik türünden bir sütunu liste düzeyinde gizlemek için PowerShell'i burada bulabilirsiniz.


#Config Variables
$SiteURL = "https://Crescent.sharepoint.com"
$ListName ="Team Documents"
$ContentTypeName ="Crescent Invoice Template V2"
$FieldName = "ProjectManager"

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

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

If($ContentType)
{
    #Get the Field from Content Type
    $ContentTypeField = $ContentType.Fields.GetByInternalNameOrTitle($FieldName)
    $Context.Load($ContentTypeField)
    $Context.ExecuteQuery()
 
    #Set Hidden Property of the field
    $ContentType.FieldLinks.GetById($ContentTypeField.Id).Hidden = $True
    $ContentType.Update($False) #Update children
    $Context.ExecuteQuery()
    Write-host -f Green "Field '$($ContentTypeField.Title)' Set to Hidden!"
}

Benzer şekilde, İçerik türündeki bir sütunu “Gerekli” Özelliği açarak zorunlu olarak ayarlayabilirsiniz. Örneğin.


$ContentType.FieldLinks.GetById($ContentTypeField.Id).Required = $True

PnP PowerShell, İçerik Türü Düzeyinde Bir Alanı Gizlemek İçin

Bir alanı içerik türünden gizlemek için bu PowerShell betiğini kullanın:


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

#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 -ErrorAction Stop
 
#Get the Field from Content Type
$ContentTypeField = $ContentType.Fields.GetByInternalNameOrTitle($FieldName)
$Context.Load($ContentTypeField)
$Context.ExecuteQuery()
 
#Set Hidden Property of the field
$ContentType.FieldLinks.GetById($ContentTypeField.Id).Hidden = $True
$ContentType.Update($True) #Update Children 
$Context.ExecuteQuery()
Write-host -f Green "Field '$($ContentTypeField.Title)' Set to Hidden!"

İlgili makaleler