当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] SharePoint Online:用于获取内容类型的 PowerShell

作者:精品下载站 日期:2024-12-14 15:06:31 浏览:14 分类:玩电脑

SharePoint Online:用于获取内容类型的 PowerShell


要求:使用 PowerShell 获取 SharePoint Online 中的内容类型。

PowerShell 通过内容类型 ID 获取内容类型:

作为管理员,您可能需要使用 PowerShell 检索有关 SharePoint Online 中特定内容类型的信息。您可以使用 PowerShell 通过网站上的名称或 ID 获取内容类型。在这篇博文中,我们将向您展示如何使用 PowerShell 获取 SharePoint Online 中的内容类型。


#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"

#parameters
$SiteURL="https://crescent.sharepoint.com/sites/marketing"
$ContentTypeID="0x01002A7A908ACAB0054880702EE263AC762B"
 
#Get Credentials to connect
$Cred= Get-Credential
 
#Setup the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
     
#Get content type by ID
$ContentType = $Ctx.web.ContentTypes.GetById($ContentTypeID)
$Ctx.Load($ContentType)
$Ctx.ExecuteQuery()
 
If($ContentType -ne $Null)
{
    #Get Columns from the content type
    $Ctx.Load($ContentType.Fields)
    $Ctx.ExecuteQuery()

    #Get columns from the content type
    ForEach($Field in $ContentType.Fields)
    {           
        Write-Host -f Green $Field.Title
    } 
}
else
{
    Write-host "Content Type '$ContentTypeName' doesn't exist!'" -f Yellow
}

SharePoint Online:PowerShell 按名称获取内容类型

以下是如何使用 PowerShell 在 SharePoint Online 中按名称获取内容类型:


#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
 
Function Get-SPOContentTypes()
{ 
    param
    (
        [Parameter(Mandatory=$true)] [string] $SiteURL,
        [Parameter(Mandatory=$true)] [string] $ContentTypeName
    )
 
    Try {
        #Get Credentials to connect
        $Cred= Get-Credential
 
        #Setup the context
        $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
        $Ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
     
        #Get content types from web
        $ContentTypes = $Ctx.Web.ContentTypes
        $Ctx.Load($ContentTypes)
        $Ctx.ExecuteQuery()
 
        #sharepoint online powershell get content type by name
        $CType = $ContentTypes | Where {$_.Name -eq $ContentTypeName}
        If($CType -ne $Null)
        {
            #Get Columns from the content type
            $Ctx.Load($CType.Fields)
            $Ctx.ExecuteQuery()
 
            $ResultArray = @()
            #Loop through the Fields in the Content Type
            ForEach ($Field in $CType.Fields)
            {
                #Create a new custom object to hold our row of data with property names:
                $Result = New-Object PSObject
                $Result | Add-Member -MemberType NoteProperty -Name "Title" -Value $Field.Title
                $Result | Add-Member -MemberType NoteProperty -Name "Internal Name" -Value $Field.InternalName
                $Result | Add-Member -MemberType NoteProperty -Name "ID" -Value $Field.Id
                $Result | Add-Member -MemberType NoteProperty -Name "Group" -Value $Field.Group
                $Result | Add-Member -MemberType NoteProperty -Name "Description" -Value $Field.Description
 
                #Add the object to array
                $ResultArray += $Result
            }
            $ResultArray | Format-table -AutoSize
        }
        else
        {
            Write-host "Content Type '$ContentTypeName' doesn't exist!'" -f Yellow
        }
   }
    Catch {
        write-host -f Red "Error:" $_.Exception.Message
    }
}
 
#Set parameter values
$SiteURL ="https://crescent.sharepoint.com/sites/marketing"
$ContentTypeName="Announcement"

#Call the function
Get-SPOContentTypes -SiteURL $SiteURL -ContentTypeName $ContentTypeName

SharePoint Online:PowerShell 列出所有内容类型

让我们使用 PowerShell 从 SharePoint Online 网站获取所有内容类型


#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
 
#Config Parameters
$SiteURL="https://crescent.sharepoint.com/sites/marketing"
 
Try {
    #Get Credentials to connect
    $Cred= Get-Credential
 
    #Setup the context
    $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
    $Ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
  
    #Get all content types from the web
    $ContentTypes = $Ctx.Web.ContentTypes
    $Ctx.Load($ContentTypes)
    $Ctx.ExecuteQuery()
  
    #List Content Type Name, Description, ID and Group
    $ContentTypes | Select Name, Description, Id, Group | Format-List  
}
Catch {
    write-host -f Red "Error:" $_.Exception.Message
}

PnP PowerShell 按名称获取内容类型

要按名称获取内容类型,请使用此 PnP PowerShell:


#Parameters
$SiteURL = "https://crescent.sharepoint.com/sites/marketing"
$ContentTypeName ="Crescent Project Proposal V1"
 
#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Interactive
 
#Get the site content type
$ContentType = Get-PnPContentType -Identity $ContentTypeName
 
#Get Content Type ID
$ContentType.Id.ToString()

同样,要通过 ID 获取内容类型,请使用:


#Parameters
$SiteURL = "https://crescent.sharepoint.com/sites/marketing"
$ContentTypeID ="0x0104004A217DA260E04940AC9DB4A010797423"
 
#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Interactive
 
#Get the site content type
$ContentType = Get-PnPContentType -Identity $ContentTypeID
 
#Get Content Type Name
$ContentType.Name

您是否曾经需要获取 SharePoint Online 网站中所有内容类型的列表?我将解释如何使用 PowerShell 获取有关 SharePoint Online 中内容类型的信息:


#Parameters
$SiteURL = "https://crescent.sharepoint.com/sites/marketing"
 
#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Interactive

#Get all site content types
$ContentTypes = Get-PnPContentType

#Get Content Type Name and ID
$ContentTypes | Select Name, ID

此 PowerShell 列出了 SharePoint Online 网站的内容类型。这是另一篇文章,用于从列表中获取所有内容类型:SharePoint Online:PowerShell to Get List Content Types

包起来

在本文中,我们了解了如何使用 PowerShell 检索 SharePoint Online 中的特定内容类型。通过使用提供的脚本,您可以连接到 SharePoint Online 环境并检索特定内容类型的详细信息。这对于管理目的非常有用,例如管理 SharePoint 内容或用于报告目的。

要使用 PowerShell 将所有内容类型导出到 CSV 或 HTML 报告,请参阅:生成报告:SharePoint Online:使用 PowerShell 获取内容类型报告

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯