-
Notifications
You must be signed in to change notification settings - Fork 610
Open
Description
Description of the issue
function Update-DeviceAppManagementPolicyAssignment
{
[CmdletBinding()]
[OutputType([System.Collections.Hashtable])]
param (
[Parameter(Mandatory = $true)]
[System.String]
$AppManagementPolicyId,
[Parameter()]
[Array]
$Assignments,
[Parameter()]
[System.String]
$Repository = 'deviceAppManagement/mobileApps',
[Parameter()]
[ValidateSet('v1.0','beta')]
[System.String]
$APIVersion = 'beta',
[Parameter()]
[System.String]
$RootIdentifier = 'mobileAppAssignments'
)
try
{
$appManagementPolicyAssignments = @()
$Uri = "/$APIVersion/$Repository/$AppManagementPolicyId/assign"
foreach ($assignment in $Assignments)
{
$formattedAssignment = @{
'@odata.type' = '#microsoft.graph.mobileAppAssignment'
intent = $assignment.intent
}
# if ($assignment.settings)
# {
# $formattedAssignment.Add('settings', $assignment.settings)
# }
if ($assignment.target -is [hashtable])
{
$target = $assignment.target
}
$formattedTarget = @{"@odata.type" = $target.dataType}
if(-not $formattedTarget."@odata.type" -and $target."@odata.type")
{
$formattedTarget."@odata.type" = $target."@odata.type"
}
if ($target.groupId)
{
$group = Get-MgGroup -GroupId ($target.groupId) -ErrorAction SilentlyContinue
if ($null -eq $group)
{
if ($target.groupDisplayName)
{
$group = Get-MgGroup -Filter "DisplayName eq '$($target.groupDisplayName -replace "'", "''")'" -All -ErrorAction SilentlyContinue
if ($null -eq $group)
{
$message = "Skipping assignment for the group with DisplayName {$($target.groupDisplayName)} as it could not be found in the directory.`r`n"
$message += "Please update your DSC resource extract with the correct groupId or groupDisplayName."
Write-Warning -Message $message
$target = $null
}
if ($group -and $group.Count -gt 1)
{
$message = "Skipping assignment for the group with DisplayName {$($target.groupDisplayName)} as it is not unique in the directory.`r`n"
$message += "Please update your DSC resource extract with the correct groupId or a unique group DisplayName."
Write-Warning -Message $message
$group = $null
$target = $null
}
}
else
{
$message = "Skipping assignment for the group with Id {$($target.groupId)} as it could not be found in the directory.`r`n"
$message += "Please update your DSC resource extract with the correct groupId or a unique group DisplayName."
Write-Warning -Message $message
$target = $null
}
}
#Skipping assignment if group not found from either groupId or groupDisplayName
if ($null -ne $group)
{
$formattedTarget.Add('groupId',$group.Id)
}
}
if ($target.deviceAndAppManagementAssignmentFilterType)
{
$formattedTarget.Add('deviceAndAppManagementAssignmentFilterType',$target.deviceAndAppManagementAssignmentFilterType)
}
if ($target.deviceAndAppManagementAssignmentFilterId)
{
$formattedTarget.Add('deviceAndAppManagementAssignmentFilterId',$target.deviceAndAppManagementAssignmentFilterId)
}
$formattedAssignment.Add('target', $formattedTarget)
if ($assignment.settings)
{
$formattedAssignment.Add('settings', $assignment.settings)
}
$appManagementPolicyAssignments += $formattedAssignment
}
$body = @{$RootIdentifier = $appManagementPolicyAssignments} | ConvertTo-Json -Depth 20
Write-Verbose -Message $body
Invoke-MgGraphRequest -Method POST -Uri $Uri -Body $body -ErrorAction Stop
}
catch
{
New-M365DSCLogEntry -Message 'Error updating data:' `
-Exception $_ `
-Source $($MyInvocation.MyCommand.Source) `
-TenantId $TenantId `
-Credential $Credential
return $null
}
}
if ($assignment.settings)
{
$formattedAssignment.Add('settings', $assignment.settings)
}
Is set two times in the code
in line 2251 there is a typo : if ($assigment.settings) : $assigment -> $assignment
but as the code also exist at lines 2313-2316 , code at lines 2251-2254 should be deleted
Microsoft 365 DSC Version
1.25.1015.1
Which workloads are affected
Intune
The DSC configuration
Verbose logs showing the problem
Environment Information + PowerShell Version
Klmouts
Metadata
Metadata
Assignees
Labels
No labels