Nota: Al final de la explicación está el código entero para copy-paste.
Nota: Si no lo ejecutamos directamente desde la SharePoint Management Shell debemos añadir su SnapIn:
Add-PSSnapin "Microsoft.SharePoint.PowerShell" -ErrorAction SilentlyContinue
1. Declaramos el sitio web y el content type al que queremos añadir la columna
$web = Get-SPWeb "YOUR_URL"
$ctype = $web.contenttypes["YOUR_CONTENTTYPE"]
2. Declaramos la nueva columna a través de su XML
$fieldXML = '<Field Type="Text"
Name="FIELD_NAME"
Description="FIELD_DESCRIPTION"
DisplayName="FIELD DISPLAY NAME"
StaticName="FIELD_NAME"
Group="FIELD_GROUP"
Hidden="FALSE"
Required="FALSE"
Sealed="FALSE"
ShowInDisplayForm="TRUE"
ShowInEditForm="TRUE"
ShowInListSettings="TRUE"
ShowInNewForm="TRUE">
</Field>'
3. Añadimos la columna a las columnas de sitio
$web.Fields.AddFieldAsXml($fieldXML)
4. Obtenemos la columna creada para asegurarnos de que se ha añadido correctamente
$field = $web.fields.getfield("FIELD_NAME")
5. Creamos un enlace a la columna que añadimos al content type
$fieldLink = new-object Microsoft.SharePoint.SPFieldLink($field)
$ctype.fieldlinks.add($fieldLink)
$ctype.update($true)
6. Dispose de la web
$web.Dispose()
Código entero
$web = Get-SPWeb "YOUR_URL"
$ctype = $web.contenttypes["YOUR_CONTENTTYPE"]
$fieldXML = '<Field Type="Text"
Name="FIELD_NAME"
Description="FIELD_DESCRIPTION"
DisplayName="FIELD DISPLAY NAME"
StaticName="FIELD_NAME"
Group="FIELD_GROUP"
Hidden="FALSE"
Required="FALSE"
Sealed="FALSE"
ShowInDisplayForm="TRUE"
ShowInEditForm="TRUE"
ShowInListSettings="TRUE"
ShowInNewForm="TRUE">
</Field>'
$web.Fields.AddFieldAsXml($fieldXML)
$field = $web.fields.getfield("FIELD_NAME")
$fieldLink = new-object Microsoft.SharePoint.SPFieldLink($field)
$ctype.fieldlinks.add($fieldLink)
$ctype.update($true)
$web.Dispose()
No Responses