Public/Associate.ps1
|
#CreateEntityAssociation function Add-CrmRecordAssociation{ # .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]$CrmRecord1, [parameter(Mandatory=$true, Position=2, ParameterSetName="CrmRecord")] [PSObject]$CrmRecord2, [parameter(Mandatory=$true, Position=1, ParameterSetName="NameWithId")] [string]$EntityLogicalName1, [parameter(Mandatory=$true, Position=2, ParameterSetName="NameWithId")] [guid]$Id1, [parameter(Mandatory=$true, Position=3, ParameterSetName="NameWithId")] [string]$EntityLogicalName2, [parameter(Mandatory=$true, Position=4, ParameterSetName="NameWithId")] [guid]$Id2, [parameter(Mandatory=$true, Position=5)] [string]$RelationshipName ) $conn = VerifyCrmConnectionParam -conn $conn -pipelineValue ($PSBoundParameters.ContainsKey('conn')) if($CrmRecord1 -ne $null) { $EntityLogicalName1 = $CrmRecord1.logicalname $Id1 = $CrmRecord1.($EntityLogicalName1 + "id") } if($CrmRecord2 -ne $null) { $EntityLogicalName2 = $CrmRecord2.logicalname $Id2 = $CrmRecord2.($EntityLogicalName2 + "id") } try { $request = New-Object Microsoft.Xrm.Sdk.Messages.AssociateRequest $request.Target = New-Object Microsoft.Xrm.Sdk.EntityReference($EntityLogicalName1, $Id1) $request.Relationship = New-Object Microsoft.Xrm.Sdk.Relationship($RelationshipName) $request.RelatedEntities = New-Object Microsoft.Xrm.Sdk.EntityReferenceCollection $request.RelatedEntities.Add((New-Object Microsoft.Xrm.Sdk.EntityReference($EntityLogicalName2, $Id2))) $conn.Execute($request) | Out-Null } catch { throw } } #CreateMultiEntityAssociation function Add-CrmMultiRecordAssociation{ # .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]$CrmRecord1, [parameter(Mandatory=$true, Position=2, ParameterSetName="CrmRecord")] [PSObject[]]$CrmRecord2s, [parameter(Mandatory=$true, Position=1, ParameterSetName="NameWithId")] [string]$EntityLogicalName1, [parameter(Mandatory=$true, Position=2, ParameterSetName="NameWithId")] [guid]$Id1, [parameter(Mandatory=$true, Position=3, ParameterSetName="NameWithId")] [string]$EntityLogicalName2, [parameter(Mandatory=$true, Position=4, ParameterSetName="NameWithId")] [guid[]]$Id2s, [parameter(Mandatory=$true, Position=5)] [string]$RelationshipName, [parameter(Mandatory=$false, Position=6)] [bool]$IsReflexiveRelationship ) $conn = VerifyCrmConnectionParam -conn $conn -pipelineValue ($PSBoundParameters.ContainsKey('conn')) if($CrmRecord1 -ne $null) { $EntityLogicalName1 = $CrmRecord1.logicalname $Id1 = $CrmRecord1.($EntityLogicalName1 + "id") } if($CrmRecord2s -ne $null) { if($CrmRecord2s.Count -ne 0) { $EntityLogicalName2 = $CrmRecord2s[0].logicalname $Ids = New-Object 'System.Collections.Generic.List[System.Guid]' foreach($CrmRecord2 in $CrmRecord2s) { $Ids.Add($CrmRecord2.($EntityLogicalName2 + "id")) } $Id2s = $Ids.ToArray() } else { Write-Warning 'CrmRecords2 does not include any records.' return } } try { $request = New-Object Microsoft.Xrm.Sdk.Messages.AssociateRequest $request.Target = New-Object Microsoft.Xrm.Sdk.EntityReference($EntityLogicalName1, $Id1) $request.Relationship = New-Object Microsoft.Xrm.Sdk.Relationship($RelationshipName) $request.RelatedEntities = New-Object Microsoft.Xrm.Sdk.EntityReferenceCollection foreach($id2 in $Id2s) { $request.RelatedEntities.Add((New-Object Microsoft.Xrm.Sdk.EntityReference($EntityLogicalName2, $id2))) } $conn.Execute($request) | Out-Null } catch { throw } } #DeleteEntityAssociation function Remove-CrmRecordAssociation{ # .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]$CrmRecord1, [parameter(Mandatory=$true, Position=2, ParameterSetName="CrmRecord")] [PSObject]$CrmRecord2, [parameter(Mandatory=$true, Position=1, ParameterSetName="NameWithId")] [string]$EntityLogicalName1, [parameter(Mandatory=$true, Position=2, ParameterSetName="NameWithId")] [guid]$Id1, [parameter(Mandatory=$true, Position=3, ParameterSetName="NameWithId")] [string]$EntityLogicalName2, [parameter(Mandatory=$true, Position=4, ParameterSetName="NameWithId")] [guid]$Id2, [parameter(Mandatory=$true, Position=5)] [string]$RelationshipName ) $conn = VerifyCrmConnectionParam -conn $conn -pipelineValue ($PSBoundParameters.ContainsKey('conn')) if($CrmRecord1 -ne $null) { $EntityLogicalName1 = $CrmRecord1.logicalname $Id1 = $CrmRecord1.($EntityLogicalName1 + "id") } if($CrmRecord2 -ne $null) { $EntityLogicalName2 = $CrmRecord2.logicalname $Id2 = $CrmRecord2.($EntityLogicalName2 + "id") } try { $request = New-Object Microsoft.Xrm.Sdk.Messages.DisassociateRequest $request.Target = New-Object Microsoft.Xrm.Sdk.EntityReference($EntityLogicalName1, $Id1) $request.Relationship = New-Object Microsoft.Xrm.Sdk.Relationship($RelationshipName) $request.RelatedEntities = New-Object Microsoft.Xrm.Sdk.EntityReferenceCollection $request.RelatedEntities.Add((New-Object Microsoft.Xrm.Sdk.EntityReference($EntityLogicalName2, $Id2))) $conn.Execute($request) | Out-Null } catch { throw } } |