internal/functions/Get-CrmBusinessUnit.ps1
|
<# .SYNOPSIS Get Business Units from Environment. .DESCRIPTION Fetches all Business Units from the CRM / Dataverse environment. .PARAMETER BaseUri Base Web API URI for the environment. Used to construct the correct REST API Url, based on the WebApi / OData endpoint .EXAMPLE PS C:\> Get-CrmBusinessUnit -BaseUri 'https://temp-test.crm4.dynamics.com' This will fetch all Business Units from the CRM / Dataverse environment. Uses the WebAPI / OData endpoint. .NOTES Author: Mötz Jensen (@Splaxi) #> function Get-CrmBusinessUnit { [CmdletBinding()] param ( [Parameter (Mandatory = $true)] [string] $BaseUri ) begin { $secureToken = (Get-AzAccessToken -ResourceUrl $baseUri -AsSecureString).Token $tokenWebApiValue = ConvertFrom-SecureString -AsPlainText -SecureString $secureToken $headersWebApi = @{ "Authorization" = "Bearer $($tokenWebApiValue)" } } process { $resBusinessUnits = Invoke-RestMethod ` -Method Get ` -Uri $($baseUri + '/api/data/v9.2/businessunits?$expand=business_unit_parent_business_unit') ` -Headers $headersWebApi 4> $null $resBusinessUnits.value | Select-PSFObject -TypeName "D365Bap.Tools.BusinessUnit" -Property "businessunitid as Id", Name, @{Name = "IsRoot"; Expression = { $null -eq $_.business_unit_parent_business_unit[0].businessunitid } }, @{Name = "ParentId"; Expression = { $_.business_unit_parent_business_unit[0].businessunitid } }, @{Name = "ParentName"; Expression = { $_.business_unit_parent_business_unit[0].name } }, "_organizationid_value as OrganizationId" } } |