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

[玩转系统] SharePoint Online:使用 PowerShell 获取网站栏

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

SharePoint Online:使用 PowerShell 获取网站栏


要求:使用 PowerShell 获取 SharePoint Online 中的网站栏。

SharePoint Online:如何获取网站栏?

您在任何列表或库中创建的网站栏或元数据字段都会保留在该列表或库中。假设您在包含多个选项的列表中创建一个选择列“部门”。如果您需要同一站点上的另一个列表或库中具有相同选择的同一列,您最终将重新创建它。另外,如果您必须更改列,则必须在所有使用它的地方进行更改。而 SharePoint 中的网站栏是在网站级别集中创建的,并且可以在网站上的任何列表或库中使用。 SharePoint 网站栏的主要目的是可重用性和可管理性。创建网站栏后,您可以在网站上的任何位置重复使用它,如果您想对该栏进行更改,只需执行一次,它就会在使用特定网站栏的所有位置进行更新。

要获取 SharePoint Online 中的所有网站栏,请转到“网站设置”>> 单击“Web 设计器库”部分下的“网站栏”。

[玩转系统] SharePoint Online:使用 PowerShell 获取网站栏

网站栏是分层的。因此,当您创建网站栏时,它会在其下方的所有网站上流动。

如何使用 PowerShell 在 SharePoint Online 中获取网站栏?

要在 SharePoint Online 中获取网站栏,请使用以下 CSOM PowerShell 脚本:


#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"
    
#Set Variables
$SiteURL= "https://crescent.sharepoint.com/sites/Marketing"
$InternalName = "MyEditor"

#Setup Credentials to connect
$Cred = Get-Credential
  
Try {
    #Setup the context
    $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
    $Ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.UserName,$Cred.Password)

    #Get the Web
    $Web = $Ctx.Web
    $Ctx.Load($Web)

    #Get the Site Column
    $SiteColumn = $Web.Fields.GetByInternalNameOrTitle($InternalName)
    $Ctx.Load($SiteColumn)
    $Ctx.ExecuteQuery()

    #Get the Site Column's Name,Type, ID and Group
    $SiteColumn | Select Title, TypeDisplayName, ID, Group
}
Catch {
    write-host -f Red "Error: " $_.Exception.Message
}

SharePoint Online:使用 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"
    
#Set Variables
$SiteURL= "https://crescent.sharepoint.com/sites/Marketing"

#Setup Credentials to connect
$Cred = Get-Credential
  
Try {
    #Setup the context
    $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
    $Ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.UserName,$Cred.Password)

    #Get the Web
    $Web = $Ctx.Web
    $Ctx.Load($Web)

    #Get All Site Columns of the Web
    $SiteColumns = $Web.Fields
    $Ctx.Load($SiteColumns)
    $Ctx.ExecuteQuery()  

    #Get the Site Column Name and Group
    $SiteColumns | Select Title, Group  
}
Catch {
    write-host -f Red "Error: " $_.Exception.Message
}

该脚本获取所有网站栏名称及其组。

PowerShell 将网站栏导出到 CSV 文件

让我们提取 SharePoint Online 网站中的所有网站栏数据,并使用 PowerShell 脚本将其导出到 CSV。


#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"
    
#Set Variables
$SiteURL= "https://crescent.sharepoint.com/sites/Marketing"
$CSVPath ="C:\Temp\SiteColumns.csv"

#Get Credentials to connect
$Cred = Get-Credential
  
Try {
    #Setup the context
    $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
    $Ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.UserName,$Cred.Password)

    #Get the Web
    $Web = $Ctx.Web
    $Ctx.Load($Web)

    #Get All Site Columns of the Web
    $SiteColumns = $Web.Fields
    $Ctx.Load($SiteColumns)
    $Ctx.ExecuteQuery()  

    $DataCollection = @()
    #Loop through each site column
    ForEach($Field in $SiteColumns)
    {
        #Collect data        
        $Data = New-Object PSObject -Property @{
            FieldName  = $Field.Title
            InternalName = $Field.InternalName
            Group = $Field.Group
            SchemaXML = $Field.SchemaXml
            ID = $Field.Id
            Type = $Field.TypeDisplayName
        }
        $DataCollection += $Data          
    }
    #Export Site columns data to CSV file
    $DataCollection | Export-Csv -Path $CSVPath -NoTypeInformation -Force
    Write-host -f Green "Site Columns Data Export to CSV!"
}
Catch {
    write-host -f Red "Error: " $_.Exception.Message
}

结果:

[玩转系统] SharePoint Online:使用 PowerShell 获取网站栏

PnP PowerShell 在 SharePoint Online 中获取网站列

使用 PnP PowerShell,我们可以检索站点的所有可用站点栏。


#Parameters
$SiteURL = "https://crescent.sharepoint.com/sites/marketing" 

#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Interactive
    
#Get All Site Columns
Get-PnPField

此脚本获取当前站点的所有站点栏的标题、内部名称和 ID。

如何通过 PnP PowerShell 获取网站中的所有列、类型和内部名称?


Get-PnPField | Select Title, TypeDisplayName, InternalName

如果要在 SharePoint Online 中备份-恢复(或导出-导入)网站列,请使用另一个脚本:SharePoint Online:使用 PowerShell 导出-导入网站列

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

取消回复欢迎 发表评论:

关灯