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!
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.
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.Sealed = $false
$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.Sealed = $false
$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 $_
}