Here is the powershell script for creating site columns for SharePoint.
Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
Start-SPAssignment -Global
##$site
$site = Get-SPWeb -Identity “<<Site Name>>” -ErrorVariable err -ErrorAction SilentlyContinue
$Option=[Microsoft.SharePoint.SPAddFieldOptions]::AddFieldInternalNameHint
#### SITE COLUMNS
#### StatusID Number Column
$FieldSchema = ‘<Field Type=”Number” Name=”StatusID” DisplayName=”StatusID” Required=”TRUE” EnforceUniqueValues=”FALSE” Indexed=”FALSE” MaxLength=”255″ Group=”Status Columns” />’
[bool]$createColumn = $true
if($createColumn)
{
$newField = $site.Fields | where {$_.InternalName -eq “StatusID”}
if($newField -eq $null)
{
$site.Fields.AddFieldAsXml($FieldSchema)
}
}
$site.Update()
#### IsActive bool Yes/No
$FieldSchema = ‘<Field Type=”Boolean” Name=”StatusIsActive” DisplayName=”StatusIsActive” Group=”Status Columns” DefaultValue=”0″ />’
[bool]$createColumn = $true
if($createColumn)
{
$newField = $site.Fields | where {$_.InternalName -eq “StatusIsActive”}
if($newField -eq $null)
{
$site.Fields.AddFieldAsXml($FieldSchema)
}
}
$site.Update()
#### ApplicationLead People picker
$FieldSchema = ‘<Field Type=”User” Name=”ApplicationLead” DisplayName=”ApplicationLead” Required=”TRUE” UserSelectionMode=”PeopleOnly” Group=”Status Columns” />’
[bool]$createColumn = $true
if($createColumn)
{
$newField = $site.Fields | where {$_.InternalName -eq “ApplicationLead”}
if($newField -eq $null)
{
$site.Fields.AddFieldAsXml($FieldSchema)
}
}
$site.Update()
#### RequestedDate DateTime
$FieldSchema = ‘<Field Type=”DateTime” Format=”DateOnly” Name=”RequestedDate” DisplayName=”RequestedDate” Required=”TRUE” EnforceUniqueValues=”FALSE” Indexed=”FALSE” MaxLength=”255″ Group=”Status Columns” />’
[bool]$createColumn = $true
if($createColumn)
{
$newField = $site.Fields | where {$_.InternalName -eq “RequestedDate”}
if($newField -eq $null)
{
$site.Fields.AddFieldAsXml($FieldSchema)
}
}
$site.Update()
#### BusinessJustification -Rich Text
$FieldSchema = ‘<Field Type=”Note” Name=”BusinessJustification” DisplayName=”BusinessJustification” NumLines=”6″ RichText=”FALSE” Group=”Status Columns” />’
[bool]$createColumn = $true
if($createColumn)
{
$newField = $site.Fields | where {$_.InternalName -eq “BusinessJustification”}
if($newField -eq $null)
{
$site.Fields.AddFieldAsXml($FieldSchema)
}
}
#### ApplicationLookup Lookup column
#Source list
$listApplication=$site.Lists.TryGetList(“Applications”)
write-host $listApplication.id
$FieldSchema = ‘<Field Type=”LookupMulti” Mult=”TRUE” List=”‘+$listApplication.id+'” ShowField=”ApplicationName” Name=”ApplicationLookup” DisplayName=”ApplicationLookup” Group=”Status Columns” />’
write-host $FieldSchema
[bool]$createColumn = $true
if($createColumn)
{
$newField = $site.Fields | where {$_.InternalName -eq “ApplicationLookup”}
if($newField -eq $null)
{
$site.Fields.AddFieldAsXml($FieldSchema)
}
}
$site.Update()
$site.Dispose()
Stop-SPAssignment -Global