functions/SPClientField/Convert-SPClientField.ps1
#Requires -Version 3.0 <# Convert-SPClientField.ps1 Copyright (c) 2017 karamem0 This software is released under the MIT License. https://github.com/karamem0/SPClient/blob/master/LICENSE #> function Convert-SPClientField { <# .SYNOPSIS Converts the column to its derived type. .DESCRIPTION The Convert-SPClientField function converts the column to its derived type. .PARAMETER ClientContext Indicates the client context. If not specified, uses default context. .PARAMETER Field Indicates the column. .EXAMPLE Convert-SPClientField $field .INPUTS None or Microsoft.SharePoint.Client.Field .OUTPUTS Derived type of Microsoft.SharePoint.Client.Field .LINK https://github.com/karamem0/SPClient/blob/master/doc/Convert-SPClientField.md #> [CmdletBinding()] param ( [Parameter(Mandatory = $false)] [Microsoft.SharePoint.Client.ClientContext] $ClientContext = $SPClient.ClientContext, [Parameter(Mandatory = $false, Position = 0, ValueFromPipeline = $true)] [Microsoft.SharePoint.Client.Field] $Field ) process { if ($ClientContext -eq $null) { throw "Cannot bind argument to parameter 'ClientContext' because it is null." } $Table = @{ Text = 'Microsoft.SharePoint.Client.FieldText' Note = 'Microsoft.SharePoint.Client.FieldMultilineText' Choice = 'Microsoft.SharePoint.Client.FieldChoice' MultiChoice = 'Microsoft.SharePoint.Client.FieldMultiChoice' Number = 'Microsoft.SharePoint.Client.FieldNumber' Currency = 'Microsoft.SharePoint.Client.FieldCurrency' DateTime = 'Microsoft.SharePoint.Client.FieldDateTime' Lookup = 'Microsoft.SharePoint.Client.FieldLookup' LookupMulti = 'Microsoft.SharePoint.Client.FieldLookup' Boolean = 'Microsoft.SharePoint.Client.FieldNumber' User = 'Microsoft.SharePoint.Client.FieldUser' UserMulti = 'Microsoft.SharePoint.Client.FieldUser' Url = 'Microsoft.SharePoint.Client.FieldUrl' Calculated = 'Microsoft.SharePoint.Client.FieldCalculated' } if (-not $Field.IsPropertyAvailable('TypeAsString')) { Invoke-ClientContextLoad ` -ClientContext $ClientContext ` -ClientObject $Field ` -Retrieval 'TypeAsString' } $Method = $ClientContext.GetType().GetMethod('CastTo') $Method = $Method.MakeGenericMethod([type[]]$Table[$Field.TypeAsString]) Write-Output $Method.Invoke($ClientContext, @($Field)) } } |