SharePoint Online:使用 PowerShell 将内容类型添加到列表或文档库
要求:SharePoint Online PowerShell 将内容类型添加到库中。
如何将内容类型添加到 SharePoint Online 中的列表或库?
在 SharePoint Online 中,您可以将内容类型添加到列表中,以帮助定义列表中存储的信息类型。例如,您可以将“产品”的内容类型添加到存储产品信息的列表中。这将允许您在列表中创建自动与“产品”内容类型关联的新项目。本文将向您展示如何将内容类型添加到 SharePoint Online 中的列表。
假设您已创建内容类型,则将内容类型添加到 SharePoint Online 列表中的步骤如下:
步骤 1:启用列表的内容类型管理(如果尚未启用)
在将内容类型添加到列表或库之前,您必须启用列表或库以支持内容类型。
- 导航至列表设置 >> 单击常规设置下的“高级设置”链接。
- 将“允许管理内容类型?”设置为“是”选项并点击页面底部的“确定”按钮以保存更改。
步骤 2:将内容类型添加到列表或库
启用内容类型后,您可以通过以下方式将内容类型添加到 SharePoint Online 中的列表或库:
- 再次转到列表设置页面,您将找到使用列出的默认内容类型创建的“内容类型”组(例如,您将找到为自定义列表列出的“项目”内容类型)。
-
单击“从现有网站内容类型添加”链接。
在“添加内容类型”页面中,选择要添加的内容类型,然后单击“添加”按钮,然后单击“确定”一次。
- 就这样。现在,您将在列表设置的“内容类型”组下找到添加的内容类型。
好吧。现在,让我们看看如何使用 PowerShell 将内容类型添加到 SharePoint Online 中的列表。
SharePoint Online PowerShell 将内容类型添加到库
让我们使用 PowerShell 将内容类型添加到 SharePoint Online 中的列表:
#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 将内容类型添加到库
以下是如何使用 Add-PnPContentTypeToList PnP PowerShell 将内容类型添加到 SharePoint Online 中的文档库:
#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
}
使用 -DefaultContentType 开关将内容类型设置为默认内容类型!如何在代码中添加一些错误处理,例如:检查给定列表是否存在,检查内容类型是否尚未添加到列表中,等等。
#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
}

