How to add column to view in all SharePoint sites

%3CLINGO-SUB%20id%3D%22lingo-sub-1403922%22%20slang%3D%22en-US%22%3EHow%20to%20add%20column%20to%20view%20in%20all%20SharePoint%20sites%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1403922%22%20slang%3D%22en-US%22%3E%3CP%3EHi%2C%3C%2FP%3E%3CP%3EIs%20there%20any%20way%20or%20PowerShell%20script%20to%20add%20column%26nbsp%3Bsynchronicity%20to%20view%20in%20SharePoint%20on%20all%20existing%20SharePoint%20sites%3F%20I%20have%20implemented%20AIP%2C%20and%20I%20would%20like%20to%20add%20%E2%80%98Sensitivity%E2%80%99%20column%20in%20all%20SharePoint%20sites.%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22column.PNG%22%20style%3D%22width%3A%20594px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fgxcuf89792.i.lithium.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F193175iF63AA2ED8D1AF49C%2Fimage-size%2Flarge%3Fv%3D1.0%26amp%3Bpx%3D999%22%20title%3D%22column.PNG%22%20alt%3D%22column.PNG%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-1403922%22%20slang%3D%22en-US%22%3E%3CLINGO-LABEL%3EPowerShell%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3ESharePoint%20Online%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1411198%22%20slang%3D%22en-US%22%3ERe%3A%20How%20to%20add%20column%20to%20view%20in%20all%20SharePoint%20sites%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1411198%22%20slang%3D%22en-US%22%3E%3CP%3EHello%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F641099%22%20target%3D%22_blank%22%3E%40elaheh%3C%2FA%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EI%20am%20trying%20to%20do%20exactly%20the%20same%20thing%20(for%20me%20should%20be%20part%20of%20sensitivity%20label%20activation%20as%20an%20option%20by%20default%20but%20that%20is%20another%20discussion)...I%20have%20spent%20a%20lot%20of%20time%20on%20it%20already%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EThis%20script%20somehow%20works%20...but%20when%20going%20back%20to%20UI%20Sensitivity%20column%20is%20not%20showing%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-powershell%22%3E%3CCODE%3E%23Load%20SharePoint%20CSOM%20Assemblies%0AAdd-Type%20-Path%20%22C%3A%5CProgram%20Files%5CCommon%20Files%5CMicrosoft%20Shared%5CWeb%20Server%20Extensions%5C16%5CISAPI%5CMicrosoft.SharePoint.Client.dll%22%0AAdd-Type%20-Path%20%22C%3A%5CProgram%20Files%5CCommon%20Files%5CMicrosoft%20Shared%5CWeb%20Server%20Extensions%5C16%5CISAPI%5CMicrosoft.SharePoint.Client.Runtime.dll%22%0A%0AFunction%20Get-SPODocumentLibrary(%24SiteURL)%0A%7B%0A%20%20%20%20Try%20%7B%0A%20%20%20%20%20%20%20%20%20%0A%20%20%20Write-host%20-f%20Yellow%20%22Processing%20Site%3A%20%24SiteURL%22%0A%20%20%20%23Get%20all%20document%20libraries%20-%20Exclude%20Hidden%20Libraries%0A%20%20%20%24DocumentLibraries%20%3D%20Get-PnPList%20%7C%20Where-Object%20%7B%24_.BaseTemplate%20-eq%20101%20-and%20%24_.Hidden%20-eq%20%24false%7D%20%23Or%20%24_.BaseType%20-eq%20%22DocumentLibrary%22%0A%20%20%0A%20%20%20%0A%20%20%20%23Loop%20through%20each%20document%20library%20and%20Get%20the%20Title%0A%20%20%20Foreach%20(%24DL%20in%20%24DocumentLibraries)%0A%20%20%20%7B%0A%20%20%20%20Write-host%20%24DL.Title%0A%20%20%20%20%23Select%20the%20default%20view%0A%20%20%20%20%24Views%20%3D%20Get-PnPView%20-List%20%24DL%20%7C%20Where-Object%20%7B%24_.DefaultView%20-eq%20%24true%7D%0A%20%20%20%20Foreach%20(%24View%20in%20%24Views)%0A%20%20%20%20%20%7B%0A%20%20%20%20%20%20Write-host%20-f%20Cyan%20%24view.Title%20%24DL.Title%20%24SiteURL%0A%20%20%20%20%20%20%24View.ViewFields.Add(%22_DisplayName%22)%23%20Tried%20also%20with%20Sensitivity%0A%20%20%20%20%20%20%24View.Update()%0A%20%20%20%20%20%20write-host%20%22Field%20added%20to%20View!%22%20-f%20Green%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20%0A%20%20%20%20%20%7D%0A%20%20%20%20%0A%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20Catch%20%7B%0A%20%20%20%20%20%20%20%20write-host%20-f%20Red%20%22Error%20Getting%20Document%20Libraries!%22%20%24_.Exception.Message%0A%20%20%20%20%7D%0A%7D%0A%0A%0A%23Config%20Parameters%0A%24AdminCenterURL%20%3D%20%22https%3A%2F%2Forgname-admin.sharepoint.com%22%0A%20%0A%23Allow%20to%20use%20any%20account%20including%20one%20with%20MFA%0AConnect-PnPOnline%20-Url%20%24AdminCenterURL%20-UseWebLogin%0A%0A%24sites%20%3D%20Get-SPOSite%20-Limit%20All%0A%0A%23Go%20through%20each%20sites%0A%20Foreach%20(%24site%20in%20%24sites)%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20write-host%20-f%20Green%20%24site.url%0A%20%20%20%20%20%20%20%20%20%20%20Get-SPODocumentLibrary%20%24site.url%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1424469%22%20slang%3D%22en-US%22%3ERe%3A%20How%20to%20add%20column%20to%20view%20in%20all%20SharePoint%20sites%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1424469%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F79818%22%20target%3D%22_blank%22%3E%40Christophe%20Humbert%3C%2FA%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EWith%20a%20bit%20of%20help%20from%20%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F34858%22%20target%3D%22_blank%22%3E%40Veronique%20Lengelle%3C%2FA%3E%26nbsp%3B%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-applescript%22%3E%3CCODE%3E%23Connect%20to%20site%0AConnect-PnPOnline%20-Url%20https%3A%2F%2FTENANTNAME.sharepoint.com%2Fsites%2FSITENAME%20-UseWebLogin%0A%0A%24docLibraries%20%3D%20Get-PnPList%20%7C%20Where-Object%20%7B%24_.BaseTemplate%20-eq%20101%20-and%20%24_.Hidden%20-eq%20%24false%7D%0A%0Aforeach(%24docLib%20in%20%24docLibraries)%7B%0A%24defaultViewInDocLib%20%3D%20Get-PnPView%20-List%20%24docLib%20%7C%20Where-Object%20%7B%20%24_.DefaultView%20-eq%20%24true%7D%0A%0Aif%20(%24defaultViewInDocLib)%7B%0A%23Should%20Get%20existing%20Fieds%0A%24Fields%3D%20%24defaultViewInDocLib.ViewFields%0A%23Add%20Sensitivity%20Field%20in%20the%20list%0A%24Fields%20%2B%3D%20%22Sensitivity%22%0A%23Set%20View%0ASet-PnPView%20-List%20%24docLib%20-Identity%20%24defaultViewInDocLib.Title%20-Fields%20%24Fields%0A%7D%0A%7D%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1425771%22%20slang%3D%22en-US%22%3ERe%3A%20How%20to%20add%20column%20to%20view%20in%20all%20SharePoint%20sites%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1425771%22%20slang%3D%22en-US%22%3E%3CP%3EThanks%20a%20lot%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F79818%22%20target%3D%22_blank%22%3E%40Christophe%20Humbert%3C%2FA%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3Ebtw%2C%20it%20seems%20it%20apply%20for%20only%20one%20site%2C%20while%20i%20need%20to%20do%20for%20all%20sites.%26nbsp%3B%3C%2FP%3E%3CPRE%3Ehttps%3A%2F%2FTENANTNAME.sharepoint.com%2Fsites%2FSITENAME%3C%2FPRE%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1426766%22%20slang%3D%22en-US%22%3ERe%3A%20How%20to%20add%20column%20to%20view%20in%20all%20SharePoint%20sites%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1426766%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F641099%22%20target%3D%22_blank%22%3E%40elaheh%3C%2FA%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EYeap%20but%20you%20can%20do%20for%20all%20sites%20...%3C%2FP%3E%3CP%3EYou%20just%20have%20to%20enumerate%20all%20sites%20and%20do%20an%20ForEach...%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1456044%22%20slang%3D%22en-US%22%3ERe%3A%20How%20to%20add%20column%20to%20view%20in%20all%20SharePoint%20sites%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1456044%22%20slang%3D%22en-US%22%3E%3CP%3EHello%3C%2FP%3E%3CP%3EAs%20I%20am%20very%20genereous%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-applescript%22%3E%3CCODE%3EFunction%20AddSensivityToDefaultView(%24URL)%0A%7B%0A%20%20%20%20Try%20%7B%0A%20%20%20%20%20%20%20%20Connect-PnPOnline%20-Url%20%24URL%20-UseWebLogin%20-ErrorAction%20Stop%0A%20%20%20%20%7D%0A%20%20%20%20Catch%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20write-host%20%22Error%3A%20%24(%24_.Exception.Message)%20%24(%24defaultViewInDocLib.Title%20)%22%20-foregroundcolor%20Red%0A%20%7D%20%0A%20%20%20%20Write-Host%20%22I%20am%20in%20site%20%24(%24URL)%22%20%0A%20%20%20%20%24docLibraries%20%3D%20Get-PnPList%20%7C%20Where-Object%20%7B%24_.BaseTemplate%20-eq%20101%20-and%20%24_.Hidden%20-eq%20%24false%7D%0A%0A%20%20%20%20foreach(%24docLib%20in%20%24docLibraries)%7B%0A%20%20%20%20%20%24defaultViewInDocLib%20%3D%20Get-PnPView%20-List%20%24docLib%20%7C%20Where-Object%20%7B%20%24_.DefaultView%20-eq%20%24true%7D%0A%0A%20%20%20%20%20if%20(%24defaultViewInDocLib)%7B%0A%20%20%20%20%20%20%23Should%20Get%20existing%20Fields%0A%20%20%20%20%20%20%24Fields%3D%20%24defaultViewInDocLib.ViewFields%0A%20%20%20%20%20%20%23Add%20Sensitivity%20Field%20in%20the%20list%20only%20if%20not%20already%20exists%0A%20%20%20%20%20%20%20%20%20%20%20%20If%20(%24Fields%20-notcontains%20%22_DisplayName%22)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%24Fields%20%2B%3D%20%22Sensitivity%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23Set%20View%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Try%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Set-PnPView%20-List%20%24docLib%20-Identity%20%24defaultViewInDocLib.Title%20-Fields%20%24Fields%20-ErrorAction%20Stop%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Catch%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20write-host%20%22Error%3A%20%24(%24_.Exception.Message)%20%24(%24defaultViewInDocLib.Title%20)%22%20-foregroundcolor%20Red%0A%20%20%20%20%20%20%20%20%20%20%7D%20%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Write-Host%20%22Already%20there%20in%20%24(%24defaultViewInDocLib.Title)%22%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%0A%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D%0A%24OrgName%20%3D%20%22YOURORG%22%0AConnect-PnPOnline%20-Url%20https%3A%2F%2F%24OrgName-admin.sharepoint.com%2F%20-UseWebLogin%0A%24Sites%20%3D%20Get-PnPTenantSite%20%0AForeach%20(%24Site%20in%20%24Sites)%7B%0A%20%20%20%20%0A%20%20%20%20if(%24Site.Url%20-ne%20%22https%3A%2F%2F%24OrgName-my.sharepoint.com%2F%22)%20%7B%0A%20%20%20%20%20%20%20%20Try%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20AddSensivityToDefaultView(%24Site.Url)%20-ErrorAction%20Stop%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20Catch%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20write-host%20%22Error%3A%20%24(%24_.Exception.Message)%22%20-foregroundcolor%20Red%0A%20%20%7D%20%0A%20%20%20%20%7D%0A%7D%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E
Highlighted
Contributor

Hi,

Is there any way or PowerShell script to add column synchronicity to view in SharePoint on all existing SharePoint sites? I have implemented AIP, and I would like to add ‘Sensitivity’ column in all SharePoint sites.

 

column.PNG

5 Replies
Highlighted

Hello@elaheh 

 

I am trying to do exactly the same thing (for me should be part of sensitivity label activation as an option by default but that is another discussion)...I have spent a lot of time on it already

 

This script somehow works ...but when going back to UI Sensitivity column is not showing

 

 

#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 Get-SPODocumentLibrary($SiteURL)
{
    Try {
         
			Write-host -f Yellow "Processing Site: $SiteURL"
			#Get all document libraries - Exclude Hidden Libraries
			$DocumentLibraries = Get-PnPList | Where-Object {$_.BaseTemplate -eq 101 -and $_.Hidden -eq $false} #Or $_.BaseType -eq "DocumentLibrary"
	 
			
			#Loop through each document library and Get the Title
			Foreach ($DL in $DocumentLibraries)
			{
				Write-host $DL.Title
				#Select the default view
				$Views = Get-PnPView -List $DL | Where-Object {$_.DefaultView -eq $true}
				Foreach ($View in $Views)
					{
						Write-host -f Cyan $view.Title $DL.Title $SiteURL
						$View.ViewFields.Add("_DisplayName")# Tried also with Sensitivity
						$View.Update()
						write-host "Field added to View!" -f Green
						
						
					}
				
			}
        }
    Catch {
        write-host -f Red "Error Getting Document Libraries!" $_.Exception.Message
    }
}


#Config Parameters
$AdminCenterURL = "https://orgname-admin.sharepoint.com"
 
#Allow to use any account including one with MFA
Connect-PnPOnline -Url $AdminCenterURL -UseWebLogin

$sites = Get-SPOSite -Limit All

#Go through each sites
 Foreach ($site in $sites)
        {
           write-host -f Green $site.url
           Get-SPODocumentLibrary $site.url
        }

 

 

Highlighted

@Christophe Humbert 

 

With a bit of help from @Veronique Lengelle 

#Connect to site
Connect-PnPOnline -Url https://TENANTNAME.sharepoint.com/sites/SITENAME -UseWebLogin

$docLibraries = Get-PnPList | Where-Object {$_.BaseTemplate -eq 101 -and $_.Hidden -eq $false}

foreach($docLib in $docLibraries){
$defaultViewInDocLib = Get-PnPView -List $docLib | Where-Object { $_.DefaultView -eq $true}

if ($defaultViewInDocLib){
#Should Get existing Fieds
$Fields= $defaultViewInDocLib.ViewFields
#Add Sensitivity Field in the list
$Fields += "Sensitivity"
#Set View
Set-PnPView -List $docLib -Identity $defaultViewInDocLib.Title -Fields $Fields
}
}

 

Highlighted

Thanks a lot @Christophe Humbert 

 

btw, it seems it apply for only one site, while i need to do for all sites. 

https://TENANTNAME.sharepoint.com/sites/SITENAME

 

Highlighted

@elaheh 

 

Yeap but you can do for all sites ...

You just have to enumerate all sites and do an ForEach...

Highlighted

Hello

As I am very genereous

 

Function AddSensivityToDefaultView($URL)
{
    Try {
        Connect-PnPOnline -Url $URL -UseWebLogin -ErrorAction Stop
    }
    Catch
    {
        write-host "Error: $($_.Exception.Message) $($defaultViewInDocLib.Title )" -foregroundcolor Red
	}	
    Write-Host "I am in site $($URL)" 
    $docLibraries = Get-PnPList | Where-Object {$_.BaseTemplate -eq 101 -and $_.Hidden -eq $false}

    foreach($docLib in $docLibraries){
	    $defaultViewInDocLib = Get-PnPView -List $docLib | Where-Object { $_.DefaultView -eq $true}

	    if ($defaultViewInDocLib){
		    #Should Get existing Fields
		    $Fields= $defaultViewInDocLib.ViewFields
		    #Add Sensitivity Field in the list only if not already exists
            If ($Fields -notcontains "_DisplayName") {
		        $Fields += "Sensitivity"
                #Set View
                Try 
                {
		          Set-PnPView -List $docLib -Identity $defaultViewInDocLib.Title -Fields $Fields -ErrorAction Stop
                }
                Catch
                {
                    write-host "Error: $($_.Exception.Message) $($defaultViewInDocLib.Title )" -foregroundcolor Red
		        }	
		    }
            else {
               Write-Host "Already there in $($defaultViewInDocLib.Title)" 
            }
      
	    }
    }
}
$OrgName = "YOURORG"
Connect-PnPOnline -Url https://$OrgName-admin.sharepoint.com/ -UseWebLogin
$Sites = Get-PnPTenantSite 
Foreach ($Site in $Sites){
    
    if($Site.Url -ne "https://$OrgName-my.sharepoint.com/") {
        Try{
            AddSensivityToDefaultView($Site.Url) -ErrorAction Stop
        }
        Catch
        {
            write-host "Error: $($_.Exception.Message)" -foregroundcolor Red
		}	
    }
}