private/tenantinfo/devices/Add-ZtDeviceEnrollmentRestriction.ps1
<# .SYNOPSIS Add Windows enrollment restriction used in Devices config view. #> function Add-ZtDeviceEnrollmentRestriction { [CmdletBinding()] param () function Get-BlockAllow { [CmdletBinding()] param ( $blockAllowBoolean ) switch ($blockAllowBoolean) { 'true' { return 'Blocked' } 'false' { return 'Allowed' } default { return '' } } } function Get-PlatformTypes { [CmdletBinding()] param ( ) return @( @{ Name = 'android' DisplayName = 'Android device administrator' }, @{ Name = 'androidForWork' DisplayName = 'Android Enterprise (work profile)' }, @{ Name = 'ios' DisplayName = 'iOS/iPadOS' }, @{ Name = 'mac' DisplayName = 'macOS' }, @{ Name = 'linux' DisplayName = 'Android Enterprise (work profile)' }, @{ Name = 'windows' DisplayName = 'Windows' }, @{ Name = 'windowsPhone' DisplayName = 'Windows Phone' } ) } function Get-PlatformTypeName { [CmdletBinding()] param ( $platformTypeName ) $platformTypes = Get-PlatformTypes $platformName = $platformTypes | Where-Object { $_.Name -eq $platformTypeName } if ($platformName) { return $platformName.DisplayName } else { return $platformTypeName } } $activity = "Getting Device enrollment restriction summary" Write-ZtProgress -Activity $activity -Status "Processing" $deviceEnrollmentConfigurations = Invoke-ZtGraphRequest -RelativeUri 'deviceManagement/deviceEnrollmentConfigurations' -QueryParameters @{ '$expand' = 'assignments' } -ApiVersion 'beta' $platformRestrictions = $deviceEnrollmentConfigurations | Where-Object { $_.deviceEnrollmentConfigurationType -eq 'singlePlatformRestriction' } # Sort by Priority (descending) then by DisplayName (ascending) $platformRestrictions = $platformRestrictions | Sort-Object @{Expression = 'priority'; Descending = $true }, @{Expression = 'displayName'; Ascending = $true } # Create the table data structure $tableData = @() $platformTypes = Get-PlatformTypes foreach ($enrollmentRestriction in $platformRestrictions) { $tableData += [PSCustomObject]@{ Platform = Get-PlatformTypeName $enrollmentRestriction.platformType Priority = $enrollmentRestriction.priority Name = $enrollmentRestriction.displayName MDM = Get-BlockAllow $enrollmentRestriction.platformRestriction.platformBlocked MinVer = $enrollmentRestriction.platformRestriction.osMinimumVersion MaxVer = $enrollmentRestriction.platformRestriction.osMaximumVersion PersonallyOwned = Get-BlockAllow $enrollmentRestriction.platformRestriction.personalDeviceEnrollmentBlocked BlockedManufacturers = $enrollmentRestriction.platformRestriction.blockedManufacturers | Join-String -Separator ', ' Scope = Get-ZtRoleScopeTag $enrollmentRestriction.roleScopeTagIds AssignedTo = Get-ZtAssignmentText $enrollmentRestriction.assignments } } # Get all the platform restriction with @odata.type #microsoft.graph.deviceEnrollmentPlatformRestrictionsConfiguration $defaultPlatformRestriction = $deviceEnrollmentConfigurations | Where-Object { $_.'@odata.type' -eq '#microsoft.graph.deviceEnrollmentPlatformRestrictionsConfiguration' } if ($defaultPlatformRestriction) { $defaultPlatforms = @( @{ Name = 'iosRestriction' DisplayName = 'iOS/iPadOS' }, @{ Name = 'windowsRestriction' DisplayName = 'Windows' }, @{ Name = 'androidRestriction' DisplayName = 'Android device administrator' }, @{ Name = 'macOSRestriction' DisplayName = 'macOS' }, @{ Name = 'androidForWorkRestriction' DisplayName = 'Android Enterprise (work profile)' } ) foreach ($defaultPlatform in $defaultPlatforms) { $propName = $defaultPlatform.Name $restriction = $defaultPlatformRestriction.$propName $tableData += [PSCustomObject]@{ Platform = $defaultPlatform.DisplayName Priority = 'Default' Name = 'All users' MDM = Get-BlockAllow $restriction.platformBlocked MinVer = $restriction.osMinimumVersion MaxVer = $restriction.osMaximumVersion PersonallyOwned = Get-BlockAllow $restriction.personalDeviceEnrollmentBlocked BlockedManufacturers = $restriction.blockedManufacturers | Join-String -Separator ', ' Scope = '' AssignedTo = 'All devices' } } } Add-ZtTenantInfo -Name "ConfigDeviceEnrollmentRestriction" -Value $tableData Write-ZtProgress -Activity $activity -Status "Completed" } |