private/tenantinfo/devices/Add-ZTDeviceCompliancePolicies.ps1
<# .SYNOPSIS Add Device compliance policies. #> function Add-ZTDeviceCompliancePolicies { function Get-DefenderEndPointLabel($advancedThreatProtectionRequiredSecurityLevel) { switch ($advancedThreatProtectionRequiredSecurityLevel) { 'high' { return 'High' } 'medium' { return 'Medium' } 'low' { return 'Low' } 'secured' { return 'Clear' } 'unavailable' { return '' } 'notSet' { return '' } default { return '' } } } function Get-DeviceThreatLevelLabel($deviceThreatProtectionRequiredSecurityLevel) { switch ($deviceThreatProtectionRequiredSecurityLevel) { 'high' { return 'High' } 'medium' { return 'Medium' } 'low' { return 'Low' } 'secured' { return 'Secured' } 'unavailable' { return '' } 'notSet' { return '' } default { return '' } } } function Get-PasswordRequiredType($passwordType) { switch ($passwordType) { 'deviceDefault' { return 'Device default' } 'alphanumeric' { return 'Alphanumeric' } 'numeric' { return 'Numeric' } 'alphabetic' { return 'Alphabetic'} 'alphanumericWithSymbols' { return 'Alphanumeric with symbols'} 'lowSecurityBiometric' { return 'Biometric (low security)'} 'customPassword' { return 'Custom password'} 'required' { return 'Password required'} 'Any' { return 'Any'} default { return $passwordType } } } function Get-AndroidCompliancePolicy($Policy) { return [PSCustomObject]@{ Platform = 'Android device administrator' PolicyName = $Policy.displayName DefenderForEndPoint = Get-DefenderEndPointLabel $Policy.AdvancedThreatProtectionRequiredSecurityLevel MinOsVersion = $Policy.OsMinimumVersion MaxOsVersion = $Policy.OsMaximumVersion RequirePswd = $Policy.passwordRequired -eq 'true' ? 'Yes' : '' MinPswdLength = $Policy.PasswordMinimumLength PasswordType = Get-PasswordRequiredType $Policy.passwordType PswdExpiryDays = $Policy.PasswordExpirationDays CountOfPreviousPswdToBlock = $Policy.PasswordPreviousPasswordBlockCount #MaxInactivityMin = $Policy.maxInactivityTimeDeviceLockInMinutes RequireEncryption = $Policy.storageRequireEncryption -eq 'true' ? 'Yes' : '' RootedJailbrokenDevices = $Policy.securityBlockJailbrokenDevices -eq 'true' ? 'Blocked' : '' MaxDeviceThreatLevel = Get-DeviceThreatLevelLabel $Policy.deviceThreatProtectionLevel RequireFirewall = '' ActionForNoncomplianceDaysPushNotification = Get-ActionForNoncomplianceDays($Policy.scheduledActionsForRule, 'pushNotification') ActionForNoncomplianceDaysSendEmail = Get-ActionForNoncomplianceDays($Policy.scheduledActionsForRule, 'sendEmail') ActionForNoncomplianceDaysRemoteLock = Get-ActionForNoncomplianceDays($Policy.scheduledActionsForRule, 'remoteLock') ActionForNoncomplianceDaysBlock = Get-ActionForNoncomplianceDays($Policy.scheduledActionsForRule, 'block') ActionForNoncomplianceDaysRetire = Get-ActionForNoncomplianceDays($Policy.scheduledActionsForRule, 'retire') Scope = '' IncludedGroups = ($Policy.assignments | Where-Object { $_.target.groupId -and $_.target.includeAllDevices -eq $false } | ForEach-Object { Get-GroupName $_.target.groupId }) -join ", " ExcludedGroups = ($Policy.assignments | Where-Object { $_.target.groupId -and $_.target.excludeAllDevices -eq $true } | ForEach-Object { Get-GroupName $_.target.groupId }) -join ", " } } $activity = "Getting Device compliance policies" Write-ZtProgress -Activity $activity -Status "Processing" $compliancePolicies = Invoke-ZtGraphRequest -RelativeUri 'deviceManagement/deviceCompliancePolicies' -QueryParameters @{ '$expand' = 'assignments,scheduledActionsForRule($expand=scheduledActionConfigurations)' } -ApiVersion 'beta' $linuxCompliancePolicies = Invoke-ZtGraphRequest -RelativeUri 'deviceManagement/deviceCompliancePolicies' -QueryParameters @{ '$expand' = 'assignments,scheduledActionsForRule($expand=scheduledActionConfigurations)' } -ApiVersion 'beta' # Create the table data structure $tableData = @() foreach ($policy in $compliancePolicies) { # switch $policy.'@odata.type'{ # '#microsoft.graph.androidCompliancePolicy' { # $tableData += Get-AndroidCompliancePolicy -Policy $policy # } # '#microsoft.graph.androidDeviceOwnerCompliancePolicy' { # $tableData += Get-AndroidDeviceOwnerCompliancePolicy -Policy $policy # } # '#microsoft.graph.androidWorkProfileCompliancePolicy' { # $tableData += Get-AndroidWorkProfileCompliancePolicy -Policy $policy # } # '#microsoft.graph.aospDeviceOwnerCompliancePolicy' { # $tableData += Get-AospDeviceOwnerCompliancePolicy -Policy $policy # } # '#microsoft.graph.iosCompliancePolicy' { # $tableData += Get-IosCompliancePolicy -Policy $policy # } # '#microsoft.graph.macOSCompliancePolicy' { # $tableData += Get-MacOSCompliancePolicy -Policy $policy # } # '#microsoft.graph.windows10CompliancePolicy' { # $tableData += Get-Windows10CompliancePolicy -Policy $policy # } # '#microsoft.graph.windows81CompliancePolicy' { # $tableData += Get-Windows81CompliancePolicy -Policy $policy # } # } # foreach($policy in $linuxCompliancePolicies){ # $tableData += Get-LinuxCompliancePolicy -Policy $policy # } $tableData += [PSCustomObject]@{ Platform = '' PolicyName = $policy.displayName DefenderForEndPoint = '' MinOsVersion = '' MaxOsVersion = '' RequirePswd = '' MinPswdLength = '' PasswordType = '' PswdExpiryDays = '' CountOfPreviousPswdToBlock = '' MaxInactivityMin = '' RequireEncryption = '' RootedJailbrokenDevices = '' MaxDeviceThreatLevel = '' RequireFirewall = '' ActionForNoncomplianceDaysPushNotification = '' ActionForNoncomplianceDaysSendEmail = '' ActionForNoncomplianceDaysRemoteLock = '' ActionForNoncomplianceDaysBlock = '' ActionForNoncomplianceDaysRetire = '' Scope = '' IncludedGroups = '' ExcludedGroups = '' } } Add-ZtTenantInfo -Name "ConfigDeviceCompliancePolicies" -Value $tableData Write-ZtProgress -Activity $activity -Status "Completed" } |