functions/SPClientContentType/Add-SPClientContentTypeField.ps1

#Requires -Version 3.0

<#
  Add-SPClientContentTypeField.ps1
 
  Copyright (c) 2017 karamem0
 
  This software is released under the MIT License.
  https://github.com/karamem0/SPClient/blob/master/LICENSE
#>


function Add-SPClientContentTypeField {


<#
.SYNOPSIS
  Adds a column to the content type.
.DESCRIPTION
  The Add-SPClientContentTypeField function adds a exsiting site column to the specified content type.
.PARAMETER ClientContext
  Indicates the client context. If not specified, uses a default context.
.PARAMETER ContentType
  Indicates the content type.
.PARAMETER Field
  Indicates the column to add.
.PARAMETER UpdateChildren
  If specified, updates all content types that inherit from the content type.
.PARAMETER PassThru
  If specified, returns the content type.
.EXAMPLE
  Add-SPClientContentTypeField $contentType -Field $field -UpdateChildren
.INPUTS
  None or Microsoft.SharePoint.Client.ContentType
.OUTPUTS
  None or Microsoft.SharePoint.Client.ContentType
.LINK
  https://github.com/karamem0/SPClient/blob/master/doc/Add-SPClientContentTypeField.md
#>


    [CmdletBinding()]
    param (
        [Parameter(Mandatory = $false)]
        [Microsoft.SharePoint.Client.ClientContext]
        $ClientContext = $SPClient.ClientContext,
        [Parameter(Mandatory = $true, Position = 0, ValueFromPipeline = $true)]
        [Microsoft.SharePoint.Client.ContentType]
        $ContentType,
        [Parameter(Mandatory = $true)]
        [Microsoft.SharePoint.Client.Field]
        $Field,
        [Parameter(Mandatory = $false)]
        [switch]
        $UpdateChildren,
        [Parameter(Mandatory = $false)]
        [switch]
        $PassThru
    )

    process {
        if ($ClientContext -eq $null) {
            throw "Cannot bind argument to parameter 'ClientContext' because it is null."
        }
        $FieldLink = New-Object Microsoft.SharePoint.Client.FieldLinkCreationInformation
        $FieldLink.Field = $Field
        $FieldLink = $ContentType.FieldLinks.Add($FieldLink)
        $ContentType.Update($UpdateChildren)
        $ClientContext.ExecuteQuery()
        if ($PassThru) {
            Write-Output $ContentType
        }
    }

}