functions/SPClientField/New-SPClientFieldUrl.ps1
#Requires -Version 3.0 <# New-SPClientFieldUrl.ps1 Copyright (c) 2017 karamem0 This software is released under the MIT License. https://github.com/karamem0/SPClient/blob/master/LICENSE #> function New-SPClientFieldUrl { <# .SYNOPSIS Creates a new URL column. .DESCRIPTION The New-SPClientFieldUrl function adds a new column to the site or list. The column allows the user to enter a URL. .PARAMETER ClientContext Indicates the client context. If not specified, uses 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 DisplayFormat Indicates the display format. - Hyperlink - Image .PARAMETER AddToDefaultView If true, the column is add to default view. .PARAMETER Retrieval Indicates the data retrieval expression. .EXAMPLE New-SPClientFieldUrl $list -Name "CustomField" -Title "Custom Field" .INPUTS None or SPClient.SPClientFieldParentParameter .OUTPUTS Microsoft.SharePoint.Client.FieldUrl .LINK https://github.com/karamem0/SPClient/blob/master/doc/New-SPClientFieldUrl.md #> [CmdletBinding()] param ( [Parameter(Mandatory = $false)] [Microsoft.SharePoint.Client.ClientContext] $ClientContext = $SPClient.ClientContext, [Parameter(Mandatory = $false, Position = 0, ValueFromPipeline = $true)] [SPClient.SPClientFieldParentParameter] $ParentObject, [Parameter(Mandatory = $true)] [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)] [ValidateSet('Hyperlink', 'Image')] [string] $DisplayFormat, [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', 'URL') $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('DisplayFormat')) { $FieldElement.SetAttribute('Format', $DisplayFormat) } $AddFieldOptions = [Microsoft.SharePoint.Client.AddFieldOptions]::AddFieldInternalNameHint $ClientObject = $ParentObject.ClientObject.Fields.AddFieldAsXml($XmlDocument.InnerXml, $AddToDefaultView, $AddFieldOptions) $ClientObject = Convert-SPClientField ` -ClientContext $ClientContext ` -Field $ClientObject Invoke-ClientContextLoad ` -ClientContext $ClientContext ` -ClientObject $ClientObject ` -Retrieval $Retrieval Write-Output $ClientObject } } |