DSCResources/cIntuneDeviceConfigurationPolicyAndroidDeviceAdministrator/cIntuneDeviceConfigurationPolicyAndroidDeviceAdministrator.schema.psm1

configuration cIntuneDeviceConfigurationPolicyAndroidDeviceAdministrator {
    param (
        [Parameter()]
        [hashtable[]]
        $Items
)

<#
IntuneDeviceConfigurationPolicyAndroidDeviceAdministrator [String] #ResourceName
{
    DisplayName = [string]
    [AccessTokens = [string[]]]
    [ApplicationId = [string]]
    [ApplicationSecret = [PSCredential]]
    [AppsBlockClipboardSharing = [bool]]
    [AppsBlockCopyPaste = [bool]]
    [AppsBlockYouTube = [bool]]
    [AppsHideList = [MSFT_MicrosoftGraphapplistitem[]]]
    [AppsInstallAllowList = [MSFT_MicrosoftGraphapplistitem[]]]
    [AppsLaunchBlockList = [MSFT_MicrosoftGraphapplistitem[]]]
    [Assignments = [MSFT_DeviceManagementConfigurationPolicyAssignments[]]]
    [BluetoothBlocked = [bool]]
    [CameraBlocked = [bool]]
    [CellularBlockDataRoaming = [bool]]
    [CellularBlockMessaging = [bool]]
    [CellularBlockVoiceRoaming = [bool]]
    [CellularBlockWiFiTethering = [bool]]
    [CertificateThumbprint = [string]]
    [CompliantAppListType = [string]{ appsInListCompliant | appsNotInListCompliant | none }]
    [CompliantAppsList = [MSFT_MicrosoftGraphapplistitem[]]]
    [Credential = [PSCredential]]
    [DateAndTimeBlockChanges = [bool]]
    [DependsOn = [string[]]]
    [Description = [string]]
    [DeviceSharingAllowed = [bool]]
    [DiagnosticDataBlockSubmission = [bool]]
    [Ensure = [string]{ Absent | Present }]
    [FactoryResetBlocked = [bool]]
    [GoogleAccountBlockAutoSync = [bool]]
    [GooglePlayStoreBlocked = [bool]]
    [Id = [string]]
    [KioskModeApps = [MSFT_MicrosoftGraphapplistitem[]]]
    [KioskModeBlockSleepButton = [bool]]
    [KioskModeBlockVolumeButtons = [bool]]
    [LocationServicesBlocked = [bool]]
    [ManagedIdentity = [bool]]
    [NfcBlocked = [bool]]
    [PasswordBlockFingerprintUnlock = [bool]]
    [PasswordBlockTrustAgents = [bool]]
    [PasswordExpirationDays = [UInt32]]
    [PasswordMinimumLength = [UInt32]]
    [PasswordMinutesOfInactivityBeforeScreenTimeout = [UInt32]]
    [PasswordPreviousPasswordBlockCount = [UInt32]]
    [PasswordRequired = [bool]]
    [PasswordRequiredType = [string]{ alphabetic | alphanumeric | alphanumericWithSymbols | any | deviceDefault | lowSecurityBiometric | numeric | numericComplex }]
    [PasswordSignInFailureCountBeforeFactoryReset = [UInt32]]
    [PowerOffBlocked = [bool]]
    [PsDscRunAsCredential = [PSCredential]]
    [RequiredPasswordComplexity = [string]{ high | low | medium | none }]
    [ScreenCaptureBlocked = [bool]]
    [SecurityRequireVerifyApps = [bool]]
    [StorageBlockGoogleBackup = [bool]]
    [StorageBlockRemovableStorage = [bool]]
    [StorageRequireDeviceEncryption = [bool]]
    [StorageRequireRemovableStorageEncryption = [bool]]
    [TenantId = [string]]
    [VoiceAssistantBlocked = [bool]]
    [VoiceDialingBlocked = [bool]]
    [WebBrowserBlockAutofill = [bool]]
    [WebBrowserBlocked = [bool]]
    [WebBrowserBlockJavaScript = [bool]]
    [WebBrowserBlockPopups = [bool]]
    [WebBrowserCookieSettings = [string]{ allowAlways | allowCurrentWebSite | allowFromWebsitesVisited | blockAlways | browserDefault }]
    [WiFiBlocked = [bool]]
}
 
#>



    Import-DscResource -ModuleName PSDesiredStateConfiguration
    Import-DscResource -ModuleName Microsoft365DSC

    $dscResourceName = 'IntuneDeviceConfigurationPolicyAndroidDeviceAdministrator'

    $param = $PSBoundParameters
    $param.Remove("InstanceName")

    $dscParameterKeys = 'DisplayName' -split ', '

        foreach ($item in $Items)
        {
            if (-not $item.ContainsKey('Ensure'))
            {
                $item.Ensure = 'Present'
            }
            $keyValues = foreach ($key in $dscParameterKeys)
        {
            $item.$key
        }
        $executionName = $keyValues -join '_'
        $executionName = $executionName -replace "[\s()\\:*-+/{}```"']", '_'
        (Get-DscSplattedResource -ResourceName $dscResourceName -ExecutionName $executionName -Properties $item -NoInvoke).Invoke($item)
    }
}