functions/SPClientField/New-SPClientFieldDateTime.ps1
#Requires -Version 3.0 <# New-SPClientFieldDateTime.ps1 Copyright (c) 2017 karamem0 This software is released under the MIT License. https://github.com/karamem0/SPClient/blob/master/LICENSE #> function New-SPClientFieldDateTime { <# .SYNOPSIS Creates a new date/time column. .DESCRIPTION The New-SPClientFieldDateTime function adds a new column to the site or list. The column allows the user to enter a date and time. .PARAMETER ClientContext Indicates the client context. If not specified, uses a default context. .PARAMETER ParentObject Indicates the site or list which a column to be created. .PARAMETER Name Indicates the internal name. .PARAMETER Title Indicates the title. .PARAMETER Identity Indicates the column GUID. .PARAMETER Description Indicates the description. .PARAMETER Required Indicates a value whether the column is required. .PARAMETER EnforceUniqueValues Indicates a value whether the column must to have unique value. .PARAMETER DisplayFormat Indicates the display format. - DateOnly - DateTime .PARAMETER FriendlyDisplayFormat Indicates the friendly display format. - Unspecified - Disabled - Relative .PARAMETER DefaultValue Indicates the default value. .PARAMETER AddToDefaultView If true, the column is add to default view. .PARAMETER Retrieval Indicates the data retrieval expression. .EXAMPLE New-SPClientFieldDateTime $list -Name "CustomField" -Title "Custom Field" .INPUTS None or SPClient.SPClientFieldParentPipeBind .OUTPUTS Microsoft.SharePoint.Client.FieldDateTime .LINK https://github.com/karamem0/SPClient/blob/master/doc/New-SPClientFieldDateTime.md #> [CmdletBinding()] param ( [Parameter(Mandatory = $false)] [Microsoft.SharePoint.Client.ClientContext] $ClientContext = $SPClient.ClientContext, [Parameter(Mandatory = $false, Position = 0, ValueFromPipeline = $true)] [SPClient.SPClientFieldParentPipeBind] $ParentObject, [string] $Name, [Parameter(Mandatory = $false)] [string] $Title = $Name, [Parameter(Mandatory = $false)] [guid] $Identity, [Parameter(Mandatory = $false)] [string] $Description, [Parameter(Mandatory = $false)] [bool] $Required, [Parameter(Mandatory = $false)] [bool] $EnforceUniqueValues, [Parameter(Mandatory = $false)] [ValidateSet('DateOnly', 'DateTime')] [string] $DisplayFormat, [Parameter(Mandatory = $false)] [ValidateSet('Unspecified', 'Disabled', 'Relative')] [string] $FriendlyDisplayFormat, [Parameter(Mandatory = $false)] [string] $DefaultValue, [Parameter(Mandatory = $false)] [bool] $AddToDefaultView, [Parameter(Mandatory = $false)] [string] $Retrieval ) process { if ($ClientContext -eq $null) { throw "Cannot bind argument to parameter 'ClientContext' because it is null." } $XmlDocument = New-Object System.Xml.XmlDocument $FieldElement = $XmlDocument.AppendChild($XmlDocument.CreateElement('Field')) $FieldElement.SetAttribute('Type', 'DateTime') $FieldElement.SetAttribute('Name', $Name) $FieldElement.SetAttribute('DisplayName', $Title) if ($PSBoundParameters.ContainsKey('Identity')) { $FieldElement.SetAttribute('ID', $Identity) } if ($PSBoundParameters.ContainsKey('Description')) { $FieldElement.SetAttribute('Description', $Description) } if ($PSBoundParameters.ContainsKey('Required')) { $FieldElement.SetAttribute('Required', $Required.ToString().ToUpper()) } if ($PSBoundParameters.ContainsKey('EnforceUniqueValues')) { $FieldElement.SetAttribute('EnforceUniqueValues', $EnforceUniqueValues.ToString().ToUpper()) $FieldElement.SetAttribute('Indexed', $EnforceUniqueValues.ToString().ToUpper()) } if ($PSBoundParameters.ContainsKey('DisplayFormat')) { $FieldElement.SetAttribute('Format', $DisplayFormat) } if ($PSBoundParameters.ContainsKey('FriendlyDisplayFormat')) { $FieldElement.SetAttribute('FriendlyDisplayFormat', $FriendlyDisplayFormat) } if ($PSBoundParameters.ContainsKey('DefaultValue')) { $DefaultElement = $FieldElement.AppendChild($XmlDocument.CreateElement('Default')) $DefaultElement.InnerText = $DefaultValue } $AddFieldOptions = [Microsoft.SharePoint.Client.AddFieldOptions]::AddFieldInternalNameHint $ClientObject = $ParentObject.ClientObject.Fields.AddFieldAsXml($XmlDocument.InnerXml, $AddToDefaultView, $AddFieldOptions) Invoke-ClientContextLoad ` -ClientContext $ClientContext ` -ClientObject $ClientObject ` -Retrieval $Retrieval $ClientObject = Convert-SPClientField ` -ClientContext $ClientContext ` -Field $ClientObject Write-Output $ClientObject } } |