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

[玩转系统] SharePoint Online:使用 PowerShell 获取所有列表字段

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

SharePoint Online:使用 PowerShell 获取所有列表字段


要求: SharePoint Online PowerShell 获取所有列表字段。

如何获取 SharePoint Online 中的列表字段?

您是否曾经需要从 SharePoint Online 列表获取列表列?也许您想知道 SharePoint Online 列的内部名称或其他一些属性?本博文将向您展示如何使用 PowerShell 和 Web 浏览器界面来获取 SharePoint Online 列表列的内部名称。

您可以通过导航到“列”部分下的列表设置来获取 SharePoint Online 中的列表列,并且您将找到特定列表的所有字段。

[玩转系统] SharePoint Online:使用 PowerShell 获取所有列表字段

SharePoint Online:用于获取列表字段的 PowerShell

下面是用于获取列表列的 SharePoint Online PowerShell: 让我们使用 PowerShell 获取列表字段属性并导出到 CSV 文件,例如:

  • 列表字段名称
  • 字段类型
  • 字段ID
  • 字段内部名称
  • 字段架构 XML
  • 和字段说明

#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 parameter values
$SiteURL="https://crescent.sharepoint.com"
$ListName="Projects"

$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 and list fields
$List = $Ctx.Web.Lists.GetByTitle($ListName)
$Ctx.Load($List)

#sharepoint online powershell get list columns
$Ctx.Load($List.Fields)
$Ctx.ExecuteQuery()
        
#Iterate through each field in the list
Foreach ($Field in $List.Fields)
{   
    #Skip System Fields
    if(($Field.ReadOnlyField -eq $False) -and ($Field.Hidden -eq $False)) 
    {
       #get internal name of sharepoint online list column powershell 
       Write-Host $Field.Title : $Field.InternalName
    }
}

SharePoint Online:获取列表的所有字段并导出到 CSV

让我们从 SharePoint Online 列表中获取所有列表字段并将它们导出到 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"

#function to Get all fields from a SharePoint Online list or library
Function Get-SPOListFields()
{ 
    param
    (
        [Parameter(Mandatory=$true)] [string] $SiteURL,
        [Parameter(Mandatory=$true)] [string] $ListName
    )

    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.Load($List.Fields)
        $Ctx.ExecuteQuery()
        
        #Array to hold result
        $FieldData = @()
        #Iterate through each field in the list
        Foreach ($Field in $List.Fields)
        {   
            Write-Host $Field.Title `t $Field.Description `t $Field.InternalName `t $Field.Id `t $Field.TypeDisplayName

            #Send Data to object array
            $FieldData += New-Object PSObject -Property @{
                    'Field Title' = $Field.Title
                    'Field Description' = $Field.Description
                    'Field ID' = $Field.Id 
                    'Internal Name' = $Field.InternalName
                    'Type' = $Field.TypeDisplayName
                    'Schema' = $Field.SchemaXML
                    }
        }
        Return $FieldData
    }
    Catch {
        write-host -f Red "Error Getting Fields from List!" $_.Exception.Message
    } 
} 

#Set parameter values
$SiteURL="https://crescent.sharepoint.com"
$ListName="Projects"
$CSVLocation ="C:\Temp\ListFields.csv"

#Call the function to get all list fields
Get-SPOListFields -SiteURL $SiteURL -ListName $ListName | Export-Csv $CSVLocation -NoTypeInformation

PnP PowerShell 从列表中获取所有字段和内部名称

您是否需要知道 SharePoint Online 列表中列的内部名称?如果是这样,下面是用于从 SharePoint Online 列表中获取所有字段以及字段名称、内部名称和 GUID 的 PowerShell。


#Config Variables
$SiteURL = "https://Crescent.sharepoint.com"
$ListName ="Projects"

#Get Credentials to connect
$Cred = Get-Credential

Try {
    #Connect to PnP Online
    Connect-PnPOnline -Url $SiteURL -Credentials $Cred
    
    #Get All Columns from List
    Get-PnPField -List $ListName
}
catch {
    write-host "Error: $($_.Exception.Message)" -foregroundcolor Red
}

[玩转系统] SharePoint Online:使用 PowerShell 获取所有列表字段

从 SharePoint Online 网站的所有列表中导出所有字段

出于备份或审核目的,您想从站点中的每个列表和库中提取所有字段信息吗?当然!这是 PnP PowerShell 的方法来做到这一点!


#Parameters
$SiteURL = "https://crescent.sharepoint.com/sites/retail"
$CSVFile = "C:\Temp\ListFields.csv"
$ListFields = @()

Try {
    #Connect to PnP Online
    Connect-PnPOnline -Url $SiteURL -Interactive
    
    #Get All lists from the site - Exclude Hidden
    $Lists = Get-PnPList | Where {$_.Hidden -eq $false}
    
    ForEach($List in $Lists)
    {
        Write-host -f Yellow "Processing List:"$List.Title
        
        #Get All Fields from the List
        $Fields = Get-PnPField -List $List | Where {$_.Hidden -eq $false}
        ForEach($Field in $Fields)
        {
            $ListFields += [PSCustomObject][ordered]@{
                ListName     = $List.Title
                FieldTitle   = $Field.Title
                InternalName = $Field.InternalName
                ID           = $Field.ID
                SchemaXml    = $Field.SchemaXml
                Required     = $Field.Required
                TypeAsString = $Field.TypeAsString
        }
    }
    }
    #Export data to CSV
    $ListFields | Export-Csv -Path $CSVFile -NoTypeInformation
}
Catch {
    write-host "Error: $($_.Exception.Message)" -foregroundcolor Red
}

以下是上述脚本的示例输出:

[玩转系统] SharePoint Online:使用 PowerShell 获取所有列表字段

通过检索所有字段,您可以获得有关 SharePoint Online 列表列的信息并执行各种操作,例如添加或删除字段。

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

取消回复欢迎 发表评论:

关灯