Sunday, April 19, 2015

How to Remove a Column from SharePoint List using PowerShell

Requirement: User created a calculated column with error in its formula! That caused the list view web part to crash! couldn't remove the column from SharePoint list using web UI.

Solution: PowerShell script to delete the column from SharePoint list!

Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
 
#Variables
$SiteURL="http://intranet.crescent.com/" 
$ListName="Change Request"
$ColumnName="Activity Status"

#Get Internal Name of the columns
$web = Get-SPWeb $SiteURL

#Get the list
$list = $web.Lists.TryGetList($ListName)

if($List -ne $null)
{
    #Get the column 
    $column = $list.Fields[$ColumnName]

    if($column -ne $null)
    {
        #Reset column properties to allow delete
        $column.Hidden = $false
        $column.ReadOnlyField = $false
        $column.AllowDeletion = $true
        $column.Update()

        #Delete the column from list
        $list.Fields.Delete($column)
        write-host "Column has been deleted!" -f Green
    }
    else
     {
        write-host "Specified column name not found!" -ForegroundColor Red
     }
}

Bulk remove columns from SharePoint list using PowerShell:
To make it reusable, lets wrap the code inside a function and call, to bulk delete columns from SharePoint list. 
Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue

#Custom Function to delete a column with PowerShell
Function Remove-Column($WebURL, $ListName, $ColumnName)
{

    #Get Internal Name of the columns
    $web = Get-SPWeb $WebURL

    #Get the list
    $list = $web.Lists.TryGetList($ListName)

    if($List -ne $null)
    {
        #Get the column 
        $column = $list.Fields[$ColumnName]

        if($column -ne $null)
        {
            #Reset column properties to allow delete
            $column.Hidden = $false
            $column.ReadOnlyField = $false
            $column.AllowDeletion = $true
            $column.Update()

            #Delete the column from list
            $list.Fields.Delete($column)
            write-host "Column '$ColumnName' has been deleted!" -f Green
        }
        else
        {
            write-host "Specified column name not found!" -ForegroundColor Red
        }
    }
    else
    {
        write-host "Specified List is not found!" -ForegroundColor Red
    }
}

#Variables
$WebURL="http://intranet.crescent.com" 
$ListName="Change Request"

#Array to hold column titles
$ColumnNames=@("Change Type","Approvers","Proposed Date and Time")

#Process each column
$ColumnNames | foreach {

    #Call the function to remove column
    Remove-Column $WebURL $ListName $_
}



You might also like:
SharePoint Usage Reports
Usage reports, collaboration and audit for SharePoint.
Document SharePoint Farm
Automatically generate SharePoint documentation.
*Sponsored


Check out these SharePoint products:

No comments :

Post a Comment

Please Login and comment to get your questions answered!

You might also like:

Related Posts Plugin for WordPress, Blogger...