diff --git a/.github/ISSUE_TEMPLATE/ProblemWithResource.yml b/.github/ISSUE_TEMPLATE/ProblemWithResource.yml index a74cec8539..71ba363725 100644 --- a/.github/ISSUE_TEMPLATE/ProblemWithResource.yml +++ b/.github/ISSUE_TEMPLATE/ProblemWithResource.yml @@ -41,8 +41,9 @@ body: label: "Which workloads are affected" description: The workload of the resource you are having an issue with. options: - - "Azure Active Directory" + - "Azure Active Directory (Entra ID)" - "Exchange Online" + - "Intune" - "Office 365 Admin" - "OneDrive for Business" - "Planner" diff --git a/CHANGELOG.md b/CHANGELOG.md index 0caf84fabf..06d4d03b3e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -34,6 +34,10 @@ * Fix group assignment by using the corrected function Update-DeviceConfigurationPolicyAssignment from module M365DSCDRGUtil FIXES [#4467](https://github.com/microsoft/Microsoft365DSC/issues/4467) +* IntuneDeviceEnrollmentStatusPageWindows10 + * Added support for specifying SelectedMobileAppNames in addition to SelectedMobileAppIds, + which are different for each tenant. + FIXES [#4494](https://github.com/microsoft/Microsoft365DSC/issues/4494) * M365DSCRuleEvaluation * Log both matching and not matching resources and in XML format * O365OrgSettings diff --git a/Modules/Microsoft365DSC/DSCResources/MSFT_IntuneDeviceEnrollmentStatusPageWindows10/MSFT_IntuneDeviceEnrollmentStatusPageWindows10.psm1 b/Modules/Microsoft365DSC/DSCResources/MSFT_IntuneDeviceEnrollmentStatusPageWindows10/MSFT_IntuneDeviceEnrollmentStatusPageWindows10.psm1 index 206a90e46b..0c90701912 100644 --- a/Modules/Microsoft365DSC/DSCResources/MSFT_IntuneDeviceEnrollmentStatusPageWindows10/MSFT_IntuneDeviceEnrollmentStatusPageWindows10.psm1 +++ b/Modules/Microsoft365DSC/DSCResources/MSFT_IntuneDeviceEnrollmentStatusPageWindows10/MSFT_IntuneDeviceEnrollmentStatusPageWindows10.psm1 @@ -57,6 +57,10 @@ function Get-TargetResource [System.String[]] $SelectedMobileAppIds, + [Parameter()] + [System.String[]] + $SelectedMobileAppNames, + [Parameter()] [System.Boolean] $ShowInstallationProgress, @@ -121,9 +125,16 @@ function Get-TargetResource Add-M365DSCTelemetryEvent -Data $data #endregion + Write-Verbose -Message "Getting configuration of the Intune Device Enrollment Status Page for Windows 10 with Id {$Id} and DisplayName {$DisplayName}" + $nullResult = $PSBoundParameters $nullResult.Ensure = 'Absent' + if ($PSBoundParameters.ContainsKey('SelectedMobileAppIds') -and $PSBoundParameters.ContainsKey('SelectedMobileAppNames')) + { + Write-Verbose -Message '[WARNING] Both SelectedMobileAppIds and SelectedMobileAppNames are specified. SelectedMobileAppNames will be ignored!' + } + $getValue = $null #region resource generator code $getValue = Get-MgBetaDeviceManagementDeviceEnrollmentConfiguration -DeviceEnrollmentConfigurationId $Id -ErrorAction SilentlyContinue ` @@ -169,7 +180,7 @@ function Get-TargetResource DisableUserStatusTrackingAfterFirstUser = $getValue.AdditionalProperties.disableUserStatusTrackingAfterFirstUser InstallProgressTimeoutInMinutes = $getValue.AdditionalProperties.installProgressTimeoutInMinutes InstallQualityUpdates = $getValue.AdditionalProperties.installQualityUpdates - SelectedMobileAppIds = $getValue.AdditionalProperties.selectedMobileAppIds + SelectedMobileAppNames = $getValue.AdditionalProperties.selectedMobileAppIds | ForEach-Object { (Get-MgBetaDeviceAppManagementMobileApp -MobileAppId $_).DisplayName } ShowInstallationProgress = $getValue.AdditionalProperties.showInstallationProgress TrackInstallProgressForAutopilotOnly = $getValue.AdditionalProperties.trackInstallProgressForAutopilotOnly Priority = $getValue.Priority @@ -177,12 +188,6 @@ function Get-TargetResource DisplayName = $getValue.DisplayName Id = $getValue.Id Ensure = 'Present' - Credential = $Credential - ApplicationId = $ApplicationId - TenantId = $TenantId - ApplicationSecret = $ApplicationSecret - CertificateThumbprint = $CertificateThumbprint - Managedidentity = $ManagedIdentity.IsPresent #endregion } $assignmentsValues = Get-MgBetaDeviceManagementDeviceEnrollmentConfigurationAssignment -DeviceEnrollmentConfigurationId $Id @@ -274,6 +279,10 @@ function Set-TargetResource [System.String[]] $SelectedMobileAppIds, + [Parameter()] + [System.String[]] + $SelectedMobileAppNames, + [Parameter()] [System.Boolean] $ShowInstallationProgress, @@ -321,7 +330,6 @@ function Set-TargetResource $ManagedIdentity ) - #Ensure the proper dependencies are installed in the current environment. Confirm-M365DSCDependencies @@ -334,9 +342,26 @@ function Set-TargetResource Add-M365DSCTelemetryEvent -Data $data #endregion + Write-Verbose -Message "Setting configuration of the Intune Device Enrollment Status Page for Windows 10 with Id {$Id} and DisplayName {$DisplayName}" + $currentInstance = Get-TargetResource @PSBoundParameters $PSBoundParameters = Remove-M365DSCAuthenticationParameter -BoundParameters $PSBoundParameters + if ($PSBoundParameters.ContainsKey('SelectedMobileAppIds') -eq $false -and $PSBoundParameters.ContainsKey('SelectedMobileAppNames') -eq $true) + { + Write-Verbose -Message 'Converting SelectedMobileAppNames to SelectedMobileAppIds' + if ($PSBoundParameters.SelectedMobileAppNames.Count -ne 0) + { + [Array]$mobileAppIds = $SelectedMobileAppNames | ForEach-Object { (Get-MgBetaDeviceAppManagementMobileApp -Filter "DisplayName eq '$_'").Id } + $PSBoundParameters.SelectedMobileAppIds = $mobileAppIds + } + else + { + $PSBoundParameters.SelectedMobileAppIds = @() + } + $PSBoundParameters.Remove('SelectedMobileAppNames') | Out-Null + } + if ($Ensure -eq 'Present' -and $currentInstance.Ensure -eq 'Absent') { Write-Verbose -Message "Creating an Intune Device Enrollment Configuration for Windows10 with DisplayName {$DisplayName}" @@ -417,9 +442,12 @@ function Set-TargetResource $Uri = "https://graph.microsoft.com/beta/deviceManagement/deviceEnrollmentConfigurations/$($currentInstance.Id)/assign" Invoke-MgGraphRequest -Method POST -Uri $Uri -Body $body -ErrorAction Stop - Update-DeviceEnrollmentConfigurationPriority ` - -DeviceEnrollmentConfigurationId $currentInstance.id ` - -Priority $Priority + if ($PSBoundParameters.ContainsKey('Priority') -and $Priority -ne $currentInstance.Priority) + { + Update-DeviceEnrollmentConfigurationPriority ` + -DeviceEnrollmentConfigurationId $currentInstance.id ` + -Priority $Priority + } } #endregion } @@ -491,6 +519,10 @@ function Test-TargetResource [System.String[]] $SelectedMobileAppIds, + [Parameter()] + [System.String[]] + $SelectedMobileAppNames, + [Parameter()] [System.Boolean] $ShowInstallationProgress, @@ -538,7 +570,6 @@ function Test-TargetResource $ManagedIdentity ) - #Ensure the proper dependencies are installed in the current environment. Confirm-M365DSCDependencies @@ -551,8 +582,17 @@ function Test-TargetResource Add-M365DSCTelemetryEvent -Data $data #endregion - Write-Verbose -Message "Testing configuration of the Intune Device Enrollment Configuration for Windows10 with Id {$Id} and DisplayName {$DisplayName}" + Write-Verbose -Message "Testing configuration of the Intune Device Enrollment Status Page for Windows 10 with Id {$Id} and DisplayName {$DisplayName}" + $CurrentValues = Get-TargetResource @PSBoundParameters + + if ($PSBoundParameters.ContainsKey('SelectedMobileAppIds') -eq $true) + { + Write-Verbose -Message 'Converting SelectedMobileAppIds to SelectedMobileAppNames' + $PSBoundParameters.SelectedMobileAppNames = $SelectedMobileAppIds | ForEach-Object { (Get-MgBetaDeviceAppManagementMobileApp -MobileAppId $_).DisplayName } + $PSBoundParameters.Remove('SelectedMobileAppIds') | Out-Null + } + $ValuesToCheck = ([Hashtable]$PSBoundParameters).clone() $ValuesToCheck = Remove-M365DSCAuthenticationParameter -BoundParameters $ValuesToCheck $ValuesToCheck.Remove('Id') | Out-Null diff --git a/Modules/Microsoft365DSC/DSCResources/MSFT_IntuneDeviceEnrollmentStatusPageWindows10/MSFT_IntuneDeviceEnrollmentStatusPageWindows10.schema.mof b/Modules/Microsoft365DSC/DSCResources/MSFT_IntuneDeviceEnrollmentStatusPageWindows10/MSFT_IntuneDeviceEnrollmentStatusPageWindows10.schema.mof index b4b6ccf761..105738c8e1 100644 --- a/Modules/Microsoft365DSC/DSCResources/MSFT_IntuneDeviceEnrollmentStatusPageWindows10/MSFT_IntuneDeviceEnrollmentStatusPageWindows10.schema.mof +++ b/Modules/Microsoft365DSC/DSCResources/MSFT_IntuneDeviceEnrollmentStatusPageWindows10/MSFT_IntuneDeviceEnrollmentStatusPageWindows10.schema.mof @@ -24,7 +24,8 @@ class MSFT_IntuneDeviceEnrollmentStatusPageWindows10 : OMI_BaseResource [Write, Description("Only show installation progress for first user post enrollment")] Boolean DisableUserStatusTrackingAfterFirstUser; [Write, Description("Set installation progress timeout in minutes")] UInt32 InstallProgressTimeoutInMinutes; [Write, Description("Allows quality updates installation during OOBE")] Boolean InstallQualityUpdates; - [Write, Description("Selected applications to track the installation status")] String SelectedMobileAppIds[]; + [Write, Description("Ids of selected applications to track the installation status. When this parameter is used, SelectedMobileAppNames is ignored")] String SelectedMobileAppIds[]; + [Write, Description("Names of selected applications to track the installation status. This parameter is ignored when SelectedMobileAppIds is also specified")] String SelectedMobileAppNames[]; [Write, Description("Show or hide installation progress to user")] Boolean ShowInstallationProgress; [Write, Description("Only show installation progress for Autopilot enrollment scenarios")] Boolean TrackInstallProgressForAutopilotOnly; [Write, Description("Priority is used when a user exists in multiple groups that are assigned enrollment configuration. Users are subject only to the configuration with the lowest priority value.")] UInt32 Priority; diff --git a/Modules/Microsoft365DSC/DSCResources/MSFT_IntuneDeviceEnrollmentStatusPageWindows10/settings.json b/Modules/Microsoft365DSC/DSCResources/MSFT_IntuneDeviceEnrollmentStatusPageWindows10/settings.json index 12ac8a15dc..0c1c8f9933 100644 --- a/Modules/Microsoft365DSC/DSCResources/MSFT_IntuneDeviceEnrollmentStatusPageWindows10/settings.json +++ b/Modules/Microsoft365DSC/DSCResources/MSFT_IntuneDeviceEnrollmentStatusPageWindows10/settings.json @@ -10,6 +10,9 @@ }, { "name": "DeviceManagementServiceConfig.Read.All" + }, + { + "name": "DeviceManagementApps.Read.All" } ], "update": [ @@ -18,6 +21,9 @@ }, { "name": "DeviceManagementServiceConfig.ReadWrite.All" + }, + { + "name": "DeviceManagementApps.Read.All" } ] }, @@ -28,6 +34,9 @@ }, { "name": "DeviceManagementServiceConfig.Read.All" + }, + { + "name": "DeviceManagementApps.Read.All" } ], "update": [ @@ -36,6 +45,9 @@ }, { "name": "DeviceManagementServiceConfig.ReadWrite.All" + }, + { + "name": "DeviceManagementApps.Read.All" } ] } diff --git a/Tests/Unit/Microsoft365DSC/Microsoft365DSC.IntuneDeviceEnrollmentStatusPageWindows10.Tests.ps1 b/Tests/Unit/Microsoft365DSC/Microsoft365DSC.IntuneDeviceEnrollmentStatusPageWindows10.Tests.ps1 index f2cd9a0bf8..fff5f3b7ea 100644 --- a/Tests/Unit/Microsoft365DSC/Microsoft365DSC.IntuneDeviceEnrollmentStatusPageWindows10.Tests.ps1 +++ b/Tests/Unit/Microsoft365DSC/Microsoft365DSC.IntuneDeviceEnrollmentStatusPageWindows10.Tests.ps1 @@ -24,20 +24,27 @@ Describe -Name $Global:DscHelper.DescribeHeader -Fixture { $secpasswd = ConvertTo-SecureString 'f@kepassword1' -AsPlainText -Force $Credential = New-Object System.Management.Automation.PSCredential ('tenantadmin@mydomain.com', $secpasswd) - Mock -CommandName Confirm-M365DSCDependencies -MockWith { - } + Mock -CommandName Confirm-M365DSCDependencies -MockWith {} - Mock -CommandName Get-PSSession -MockWith { - } + Mock -CommandName Get-PSSession -MockWith {} - Mock -CommandName Remove-PSSession -MockWith { - } + Mock -CommandName Remove-PSSession -MockWith {} - Mock -CommandName Update-MgBetaDeviceManagementDeviceEnrollmentConfiguration -MockWith { - } + Mock -CommandName Update-MgBetaDeviceManagementDeviceEnrollmentConfiguration -MockWith {} - Mock -CommandName Remove-MgBetaDeviceManagementDeviceEnrollmentConfiguration -MockWith { - } + Mock -CommandName Remove-MgBetaDeviceManagementDeviceEnrollmentConfiguration -MockWith {} + + Mock -CommandName Get-MgBetaDeviceAppManagementMobileApp -MockWith { + return @{ + DisplayName = 'FakeStringValue' + } + } -ParameterFilter { $MobileAppId } + + Mock -CommandName Get-MgBetaDeviceAppManagementMobileApp -MockWith { + return @{ + Id = 'FakeGuidValue' + } + } -ParameterFilter { $Filter} Mock -CommandName New-M365DSCConnection -MockWith { return 'Credentials' @@ -47,11 +54,9 @@ Describe -Name $Global:DscHelper.DescribeHeader -Fixture { return @() } - Mock -CommandName Update-DeviceConfigurationPolicyAssignment -MockWith { - } + Mock -CommandName Update-DeviceConfigurationPolicyAssignment -MockWith {} - Mock Update-DeviceEnrollmentConfigurationPriority { - } + Mock Update-DeviceEnrollmentConfigurationPriority {} # Mock Write-Host to hide output during the tests Mock -CommandName Write-Host -MockWith { @@ -137,7 +142,7 @@ Describe -Name $Global:DscHelper.DescribeHeader -Fixture { disableUserStatusTrackingAfterFirstUser = $True installQualityUpdates = $True showInstallationProgress = $True - selectedMobileAppIds = @('FakeStringValue') + selectedMobileAppIds = @('FakeGuidValue') blockDeviceSetupRetryByUser = $True allowDeviceUseOnInstallFailure = $True customErrorMessage = 'FakeStringValue' @@ -163,6 +168,7 @@ Describe -Name $Global:DscHelper.DescribeHeader -Fixture { Should -Invoke -CommandName Remove-MgBetaDeviceManagementDeviceEnrollmentConfiguration -Exactly 1 } } + Context -Name 'The IntuneDeviceEnrollmentStatusPageWindows10 Exists and Values are already in the desired state' -Fixture { BeforeAll { $testParams = @{ @@ -178,7 +184,7 @@ Describe -Name $Global:DscHelper.DescribeHeader -Fixture { DisableUserStatusTrackingAfterFirstUser = $True InstallProgressTimeoutInMinutes = 25 InstallQualityUpdates = $True - SelectedMobileAppIds = @('FakeStringValue') + SelectedMobileAppIds = @('FakeGuidValue') ShowInstallationProgress = $True TrackInstallProgressForAutopilotOnly = $True Ensure = 'Present' @@ -196,7 +202,59 @@ Describe -Name $Global:DscHelper.DescribeHeader -Fixture { disableUserStatusTrackingAfterFirstUser = $True installQualityUpdates = $True showInstallationProgress = $True - selectedMobileAppIds = @('FakeStringValue') + selectedMobileAppIds = @('FakeGuidValue') + blockDeviceSetupRetryByUser = $True + allowDeviceUseOnInstallFailure = $True + customErrorMessage = 'FakeStringValue' + allowNonBlockingAppInstallation = $True + allowLogCollectionOnInstallFailure = $True + allowDeviceResetOnInstallFailure = $True + installProgressTimeoutInMinutes = 25 + } + Priority = 25 + } + } + } + + It 'Should return true from the Test method' { + Test-TargetResource @testParams | Should -Be $true + } + } + + Context -Name 'The IntuneDeviceEnrollmentStatusPageWindows10 Exists and Values are already in the desired state, using SelectedMobileAppNames' -Fixture { + BeforeAll { + $testParams = @{ + Id = 'FakeStringValue' + DisplayName = 'FakeStringValue' + Description = 'FakeStringValue' + AllowDeviceResetOnInstallFailure = $True + AllowDeviceUseOnInstallFailure = $True + AllowLogCollectionOnInstallFailure = $True + AllowNonBlockingAppInstallation = $True + BlockDeviceSetupRetryByUser = $True + CustomErrorMessage = 'FakeStringValue' + DisableUserStatusTrackingAfterFirstUser = $True + InstallProgressTimeoutInMinutes = 25 + InstallQualityUpdates = $True + SelectedMobileAppNames = @('FakeStringValue') + ShowInstallationProgress = $True + TrackInstallProgressForAutopilotOnly = $True + Ensure = 'Present' + Credential = $Credential + } + + Mock -CommandName Get-MgBetaDeviceManagementDeviceEnrollmentConfiguration -MockWith { + return @{ + Id = 'FakeStringValue' + DisplayName = 'FakeStringValue' + Description = 'FakeStringValue' + AdditionalProperties = @{ + trackInstallProgressForAutopilotOnly = $True + '@odata.type' = '#microsoft.graph.windows10EnrollmentCompletionPageConfiguration' + disableUserStatusTrackingAfterFirstUser = $True + installQualityUpdates = $True + showInstallationProgress = $True + selectedMobileAppIds = @('FakeGuidValue') blockDeviceSetupRetryByUser = $True allowDeviceUseOnInstallFailure = $True customErrorMessage = 'FakeStringValue' @@ -231,7 +289,60 @@ Describe -Name $Global:DscHelper.DescribeHeader -Fixture { DisableUserStatusTrackingAfterFirstUser = $True InstallProgressTimeoutInMinutes = 25 InstallQualityUpdates = $True - SelectedMobileAppIds = @('FakeStringValue') + SelectedMobileAppIds = @('FakeGuidValue') + ShowInstallationProgress = $True + TrackInstallProgressForAutopilotOnly = $True + Ensure = 'Present' + Credential = $Credential + } + + Mock -CommandName Get-MgBetaDeviceManagementDeviceEnrollmentConfiguration -MockWith { + return @{ + Id = 'FakeStringValue' + DisplayName = 'FakeStringValue' + Description = 'FakeStringValue' + AdditionalProperties = @{ + installProgressTimeoutInMinutes = 7 + customErrorMessage = 'FakeStringValue' + trackInstallProgressForAutopilotOnly = $False + selectedMobileAppIds = @('FakeGuidValue') + showInstallationProgress = $False + } + Priority = 7 + } + } + } + + It 'Should return Values from the Get method' { + (Get-TargetResource @testParams).Ensure | Should -Be 'Present' + } + + It 'Should return false from the Test method' { + Test-TargetResource @testParams | Should -Be $false + } + + It 'Should call the Set method' { + Set-TargetResource @testParams + Should -Invoke -CommandName Update-MgBetaDeviceManagementDeviceEnrollmentConfiguration -Exactly 1 + } + } + + Context -Name 'The IntuneDeviceEnrollmentStatusPageWindows10 exists and values are NOT in the desired state, using SelectedMobileAppNames' -Fixture { + BeforeAll { + $testParams = @{ + Id = 'FakeStringValue' + DisplayName = 'FakeStringValue' + Description = 'FakeStringValue' + AllowDeviceResetOnInstallFailure = $True + AllowDeviceUseOnInstallFailure = $True + AllowLogCollectionOnInstallFailure = $True + AllowNonBlockingAppInstallation = $True + BlockDeviceSetupRetryByUser = $True + CustomErrorMessage = 'FakeStringValue' + DisableUserStatusTrackingAfterFirstUser = $True + InstallProgressTimeoutInMinutes = 25 + InstallQualityUpdates = $True + SelectedMobileAppNames = @('FakeStringValue') ShowInstallationProgress = $True TrackInstallProgressForAutopilotOnly = $True Ensure = 'Present' @@ -247,7 +358,7 @@ Describe -Name $Global:DscHelper.DescribeHeader -Fixture { installProgressTimeoutInMinutes = 7 customErrorMessage = 'FakeStringValue' trackInstallProgressForAutopilotOnly = $False - selectedMobileAppIds = @('FakeStringValue') + selectedMobileAppIds = @('FakeGuidValue') showInstallationProgress = $False } Priority = 7 @@ -288,7 +399,7 @@ Describe -Name $Global:DscHelper.DescribeHeader -Fixture { disableUserStatusTrackingAfterFirstUser = $True installQualityUpdates = $True showInstallationProgress = $True - selectedMobileAppIds = @('FakeStringValue') + selectedMobileAppIds = @('FakeGuidValue') blockDeviceSetupRetryByUser = $True allowDeviceUseOnInstallFailure = $True customErrorMessage = 'FakeStringValue' diff --git a/Tests/Unit/Stubs/Microsoft365.psm1 b/Tests/Unit/Stubs/Microsoft365.psm1 index 72f1b9c480..3523d2be0b 100644 --- a/Tests/Unit/Stubs/Microsoft365.psm1 +++ b/Tests/Unit/Stubs/Microsoft365.psm1 @@ -81125,6 +81125,495 @@ function Update-MgBetaDeviceAppManagementPolicySetAssignment $Confirm ) } +#endregion + +#region MgBetaDeviceAppManagementMobileApp +function Get-MgBetaDeviceAppManagementMobileApp +{ + [CmdletBinding()] + param + ( + [Parameter()] + [System.String] + $MobileAppId, + + [Parameter()] + [PSObject] + $InputObject, + + [Parameter()] + [System.String[]] + $ExpandProperty, + + [Parameter()] + [System.String[]] + $Property, + + [Parameter()] + [System.String] + $Filter, + + [Parameter()] + [System.String] + $Search, + + [Parameter()] + [System.Int32] + $Skip, + + [Parameter()] + [System.String[]] + $Sort, + + [Parameter()] + [System.Int32] + $Top, + + [Parameter()] + [System.String] + $ResponseHeadersVariable, + + [Parameter()] + [System.Management.Automation.SwitchParameter] + $Break, + + [Parameter()] + [System.Collections.IDictionary] + $Headers, + + [Parameter()] + [PSObject[]] + $HttpPipelineAppend, + + [Parameter()] + [PSObject[]] + $HttpPipelinePrepend, + + [Parameter()] + [System.Uri] + $Proxy, + + [Parameter()] + [System.Management.Automation.PSCredential] + $ProxyCredential, + + [Parameter()] + [System.Management.Automation.SwitchParameter] + $ProxyUseDefaultCredentials, + + [Parameter()] + [System.Int32] + $PageSize, + + [Parameter()] + [System.Management.Automation.SwitchParameter] + $All, + + [Parameter()] + [System.String] + $CountVariable + ) +} + +function New-MgBetaDeviceAppManagementMobileApp +{ + [CmdletBinding()] + param + ( + [Parameter()] + [PSObject] + $BodyParameter, + + [Parameter()] + [System.String] + $ResponseHeadersVariable, + + [Parameter()] + [System.Collections.Hashtable] + $AdditionalProperties, + + [Parameter()] + [PSObject[]] + $Assignments, + + [Parameter()] + [PSObject[]] + $Categories, + + [Parameter()] + [System.DateTime] + $CreatedDateTime, + + [Parameter()] + [System.Int32] + $DependentAppCount, + + [Parameter()] + [System.String] + $Description, + + [Parameter()] + [System.String] + $Developer, + + [Parameter()] + [System.String] + $DisplayName, + + [Parameter()] + [System.String] + $Id, + + [Parameter()] + [System.String] + $InformationUrl, + + [Parameter()] + [System.Management.Automation.SwitchParameter] + $IsAssigned, + + [Parameter()] + [System.Management.Automation.SwitchParameter] + $IsFeatured, + + [Parameter()] + [PSObject] + $LargeIcon, + + [Parameter()] + [System.DateTime] + $LastModifiedDateTime, + + [Parameter()] + [System.String] + $Notes, + + [Parameter()] + [System.String] + $Owner, + + [Parameter()] + [System.String] + $PrivacyInformationUrl, + + [Parameter()] + [System.String] + $Publisher, + + [Parameter()] + [PSObject] + $PublishingState, + + [Parameter()] + [PSObject[]] + $Relationships, + + [Parameter()] + [System.String[]] + $RoleScopeTagIds, + + [Parameter()] + [System.Int32] + $SupersededAppCount, + + [Parameter()] + [System.Int32] + $SupersedingAppCount, + + [Parameter()] + [System.Int32] + $UploadState, + + [Parameter()] + [System.Management.Automation.SwitchParameter] + $Break, + + [Parameter()] + [System.Collections.IDictionary] + $Headers, + + [Parameter()] + [PSObject[]] + $HttpPipelineAppend, + + [Parameter()] + [PSObject[]] + $HttpPipelinePrepend, + + [Parameter()] + [System.Uri] + $Proxy, + + [Parameter()] + [System.Management.Automation.PSCredential] + $ProxyCredential, + + [Parameter()] + [System.Management.Automation.SwitchParameter] + $ProxyUseDefaultCredentials + ) +} + +function Remove-MgBetaDeviceAppManagementMobileApp +{ + [CmdletBinding()] + param + ( + [Parameter()] + [System.String] + $MobileAppId, + + [Parameter()] + [PSObject] + $InputObject, + + [Parameter()] + [System.String] + $ResponseHeadersVariable, + + [Parameter()] + [System.Management.Automation.SwitchParameter] + $Break, + + [Parameter()] + [System.Collections.IDictionary] + $Headers, + + [Parameter()] + [PSObject[]] + $HttpPipelineAppend, + + [Parameter()] + [PSObject[]] + $HttpPipelinePrepend, + + [Parameter()] + [System.Management.Automation.SwitchParameter] + $PassThru, + + [Parameter()] + [System.Uri] + $Proxy, + + [Parameter()] + [System.Management.Automation.PSCredential] + $ProxyCredential, + + [Parameter()] + [System.Management.Automation.SwitchParameter] + $ProxyUseDefaultCredentials + ) +} + +function Set-MgBetaDeviceAppManagementMobileApp +{ + [CmdletBinding()] + param + ( + [Parameter()] + [System.String] + $MobileAppId, + + [Parameter()] + [PSObject] + $InputObject, + + [Parameter()] + [PSObject] + $BodyParameter, + + [Parameter()] + [System.String] + $ResponseHeadersVariable, + + [Parameter()] + [System.Collections.Hashtable] + $AdditionalProperties, + + [Parameter()] + [PSObject[]] + $MobileAppAssignments, + + [Parameter()] + [System.Management.Automation.SwitchParameter] + $Break, + + [Parameter()] + [System.Collections.IDictionary] + $Headers, + + [Parameter()] + [PSObject[]] + $HttpPipelineAppend, + + [Parameter()] + [PSObject[]] + $HttpPipelinePrepend, + + [Parameter()] + [System.Management.Automation.SwitchParameter] + $PassThru, + + [Parameter()] + [System.Uri] + $Proxy, + + [Parameter()] + [System.Management.Automation.PSCredential] + $ProxyCredential, + + [Parameter()] + [System.Management.Automation.SwitchParameter] + $ProxyUseDefaultCredentials + ) +} + +function Update-MgBetaDeviceAppManagementMobileApp +{ + [CmdletBinding()] + param + ( + [Parameter()] + [System.String] + $MobileAppId, + + [Parameter()] + [PSObject] + $InputObject, + + [Parameter()] + [PSObject] + $BodyParameter, + + [Parameter()] + [System.String] + $ResponseHeadersVariable, + + [Parameter()] + [System.Collections.Hashtable] + $AdditionalProperties, + + [Parameter()] + [PSObject[]] + $Assignments, + + [Parameter()] + [PSObject[]] + $Categories, + + [Parameter()] + [System.DateTime] + $CreatedDateTime, + + [Parameter()] + [System.Int32] + $DependentAppCount, + + [Parameter()] + [System.String] + $Description, + + [Parameter()] + [System.String] + $Developer, + + [Parameter()] + [System.String] + $DisplayName, + + [Parameter()] + [System.String] + $Id, + + [Parameter()] + [System.String] + $InformationUrl, + + [Parameter()] + [System.Management.Automation.SwitchParameter] + $IsAssigned, + + [Parameter()] + [System.Management.Automation.SwitchParameter] + $IsFeatured, + + [Parameter()] + [PSObject] + $LargeIcon, + + [Parameter()] + [System.DateTime] + $LastModifiedDateTime, + + [Parameter()] + [System.String] + $Notes, + + [Parameter()] + [System.String] + $Owner, + + [Parameter()] + [System.String] + $PrivacyInformationUrl, + + [Parameter()] + [System.String] + $Publisher, + + [Parameter()] + [PSObject] + $PublishingState, + + [Parameter()] + [PSObject[]] + $Relationships, + + [Parameter()] + [System.String[]] + $RoleScopeTagIds, + + [Parameter()] + [System.Int32] + $SupersededAppCount, + + [Parameter()] + [System.Int32] + $SupersedingAppCount, + + [Parameter()] + [System.Int32] + $UploadState, + + [Parameter()] + [System.Management.Automation.SwitchParameter] + $Break, + + [Parameter()] + [System.Collections.IDictionary] + $Headers, + + [Parameter()] + [PSObject[]] + $HttpPipelineAppend, + + [Parameter()] + [PSObject[]] + $HttpPipelinePrepend, + + [Parameter()] + [System.Uri] + $Proxy, + + [Parameter()] + [System.Management.Automation.PSCredential] + $ProxyCredential, + + [Parameter()] + [System.Management.Automation.SwitchParameter] + $ProxyUseDefaultCredentials + ) +} #endregion