SharePoint Online: Get All List Fields using PowerShell

Requirement: SharePoint Online PowerShell to Get All List Fields.

How to Get List Fields in SharePoint Online?

Do you ever need to get list columns from a SharePoint Online List? Maybe you wanted to know the internal name of a SharePoint Online column or some other properties? This blog post will show you how to use PowerShell and a web browser interface to get the internal name of a SharePoint Online list column.

You can get list columns in SharePoint Online by navigating to the list settings under the “Columns” section, and you’ll find all fields of the particular list.

sharepoint Online get all list fields

SharePoint Online: PowerShell to Get List Fields

Here is the SharePoint Online PowerShell to get list columns: Let’s use PowerShell to get list field properties and export to a CSV file, such as:

  • List field name
  • Field Type
  • Field ID
  • Field Internal Name
  • Field Schema XML
  • and Field description
#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"

#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: Get All Fields of a List and Export to CSV

Let’s get all list fields from a SharePoint Online list and export them to a CSV file.

#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 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 to Get All Fields and Internal Names from a List

Do you need to know the column’s internal name in a SharePoint Online list? If so, Here is the PowerShell to get all fields along with field name, Internal name, and GUID from a SharePoint Online list.

#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 get list fields

Get Specific Fields from a SharePoint List

If you want to retrieve only specific fields from a SharePoint list, you can modify the script accordingly. Here’s an example that retrieves fields by their internal names:

#Config Variables
$SiteURL = "https://crescent.sharepoint.com/sites/PMP"
$ListName= "Parent Projects"

#Field Internal Names
$FieldInternalNames = @("Title", "ProjectDescription", "Department", "EndDate","StartDate")

#Connect to the site
Connect-PnPOnline -Url $SiteURL -Interactive

#Get All fields
$Fields = Get-PnPField -List $ListName | Where-Object { $FieldInternalNames -contains $_.InternalName }

ForEach ($Field in $Fields) {
    Write-Output "Field Title: $($field.Title)"
    Write-Output "Field Internal Name: $($field.InternalName)"
    Write-Output "Field Type: $($field.TypeAsString)"
    Write-Output "----------------------------------------"
}

In this example, we specify an array of field internal names $fieldInternalNames that we want to retrieve. The script filters the fields based on the specified internal names and displays the field details.

Export All Fields from All Lists in a SharePoint Online Site

For backup or auditing purposes, do you want to extract all field information from every list and library on a site? Sure! Here is the PnP PowerShell way to do that!

#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
}

Here is the sample output from the above script:

sharepoint online powershell get list columns

By retrieving all fields, you can obtain information about your SharePoint Online list columns and perform various actions, such as adding or removing fields.

Salaudeen Rajack

Salaudeen Rajack - Information Technology Expert with Two-decades of hands-on experience, specializing in SharePoint, PowerShell, Microsoft 365, and related products. He has held various positions including SharePoint Architect, Administrator, Developer and consultant, has helped many organizations to implement and optimize SharePoint solutions. Known for his deep technical expertise, He's passionate about sharing the knowledge and insights to help others, through the real-world articles!

5 thoughts on “SharePoint Online: Get All List Fields using PowerShell

  • Help me. What are the cases for specifying views?

    Reply
  • Is there a way to get the Content type of the fields? I need to filter out only fields coming from a specific Content type

    Reply
  • Hi,
    I need a script to export all the list and library name, Column Internal Name, Column Display Name, Column Type from a site collection to excel without specifying a list/library name, could you please help?

    Thanks!

    Reply
    • Sure! Use the last script under “Export All Fields from All Lists in a SharePoint Online Site” heading!

      Reply

Leave a Reply

Your email address will not be published. Required fields are marked *