functions/SPClientField/Get-SPClientField.ps1
#Requires -Version 3.0 <# Get-SPClientField.ps1 Copyright (c) 2017 karamem0 This software is released under the MIT License. https://github.com/karamem0/SPClient/blob/master/LICENSE #> function Get-SPClientField { <# .SYNOPSIS Gets one or more columns. .DESCRIPTION The Get-SPClientField function lists all columns or retrieves the specified column. If not specified filterable parameter, returns all columns of the site or list. Otherwise, returns a column which matches the parameter. .PARAMETER ClientContext Indicates the client context. If not specified, uses default context. .PARAMETER ParentObject Indicates the site or list which the columns are contained. .PARAMETER NoEnumerate If specified, suppresses enumeration in output. .PARAMETER Identity Indicates the column GUID. .PARAMETER Name Indicates the column title or internal name. .PARAMETER Retrieval Indicates the data retrieval expression. .EXAMPLE Get-SPClientField $list .EXAMPLE Get-SPClientField $list -Identity "39ED73EB-FDD8-4870-91A5-EEE0ACB966B2" .EXAMPLE Get-SPClientField $list -Name "Custom Field" .EXAMPLE Get-SPClientField $list -Retrieval "Title" .INPUTS None or SPClient.SPClientFieldParentParameter .OUTPUTS Microsoft.SharePoint.Client.FieldCollection or Microsoft.SharePoint.Client.Field .LINK https://github.com/karamem0/SPClient/blob/master/doc/Get-SPClientField.md #> [CmdletBinding(DefaultParameterSetName = 'All')] param ( [Parameter(Mandatory = $false)] [Microsoft.SharePoint.Client.ClientContext] $ClientContext = $SPClient.ClientContext, [Parameter(Mandatory = $true, Position = 0, ValueFromPipeline = $true)] [SPClient.SPClientFieldParentParameter] $ParentObject, [Parameter(Mandatory = $false, ParameterSetName = 'All')] [switch] $NoEnumerate, [Parameter(Mandatory = $true, ParameterSetName = 'Identity')] [Alias('Id')] [guid] $Identity, [Parameter(Mandatory = $true, ParameterSetName = 'Name')] [Alias('Title')] [string] $Name, [Parameter(Mandatory = $false)] [string] $Retrieval ) process { if ($ClientContext -eq $null) { throw "Cannot bind argument to parameter 'ClientContext' because it is null." } $ClientObjectCollection = $ParentObject.ClientObject.Fields if ($PSCmdlet.ParameterSetName -eq 'All') { Invoke-ClientContextLoad ` -ClientContext $ClientContext ` -ClientObject $ClientObjectCollection ` -Retrieval $Retrieval Write-Output $ClientObjectCollection -NoEnumerate:$NoEnumerate } if ($PSCmdlet.ParameterSetName -eq 'Identity') { $PathMethod = New-Object Microsoft.SharePoint.Client.ObjectPathMethod( ` $ClientContext, ` $ClientObjectCollection.Path, ` 'GetById', ` [object[]]$Identity) $ClientObject = New-Object Microsoft.SharePoint.Client.Field($ClientContext, $PathMethod) Invoke-ClientContextLoad ` -ClientContext $ClientContext ` -ClientObject $ClientObject ` -Retrieval $Retrieval Write-Output $ClientObject trap { throw 'The specified column could not be found.' } } if ($PSCmdlet.ParameterSetName -eq 'Name') { $PathMethod = New-Object Microsoft.SharePoint.Client.ObjectPathMethod( ` $ClientContext, ` $ClientObjectCollection.Path, ` 'GetByInternalNameOrTitle', ` [object[]]$Name) $ClientObject = New-Object Microsoft.SharePoint.Client.Field($ClientContext, $PathMethod) Invoke-ClientContextLoad ` -ClientContext $ClientContext ` -ClientObject $ClientObject ` -Retrieval $Retrieval Write-Output $ClientObject trap { throw 'The specified column could not be found.' } } } } |