Public/Note.txt

#CreateAnnotation
function Add-CrmNoteToCrmRecord{
# .ExternalHelp Campgemini.Xrm.Data.PowerShell.Help.xml
    [CmdletBinding()]
    PARAM(
        [parameter(Mandatory=$false)]
        [Microsoft.Xrm.Sdk.IOrganizationService]$conn,
        [parameter(Mandatory=$true, Position=1, ParameterSetName="CrmRecord")]
        [PSObject]$CrmRecord,
        [parameter(Mandatory=$true, Position=1, ParameterSetName="NameWithId")]
        [string]$EntityLogicalName,
        [parameter(Mandatory=$true, Position=2, ParameterSetName="NameWithId")]
        [guid]$Id,
        [parameter(Mandatory=$true, Position=3)]
        [string]$Subject,
        [parameter(Mandatory=$true, Position=4)]
        [string]$NoteText
    )
    $conn = VerifyCrmConnectionParam -conn $conn -pipelineValue ($PSBoundParameters.ContainsKey('conn'))
    if($CrmRecord -ne $null)
    {
        $EntityLogicalName = $CrmRecord.logicalname
        $Id = $CrmRecord.($EntityLogicalName + "id")
    }
     
    $newfields = New-Object 'System.Collections.Generic.Dictionary[[String], [Object]]'
     
    $subjectfield = [PSCustomObject]@{
        Type = "String"
        Value = $Subject
    }
 
    $noteTextfield = [PSCustomObject]@{
        Type = "String"
        Value = $NoteText
    }
 
    $newfields.Add("subject", $subjectfield)
    $newfields.Add("notetext", $noteTextfield)
 
    try
    {
        $result = $conn.CreateAnnotation($EntityLogicalName, $Id, $newfields, [Guid]::Empty)
        if($result -eq $null)
        {
            throw $_.Exception
        }
    }
    catch
    {
        throw $_.Exception
    }
}