Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error message: ModelValidationFailure a type name that is incompatible with the metadata. The value specified its type as 'microsoft.management.servic es.api.win32LobAppRegistryRequirement', but the type specified in the metadata is 'microsoft.management.services.api.win32LobAppDetection'. #136

Open
slbvc opened this issue Jan 2, 2024 · 3 comments
Assignees

Comments

@slbvc
Copy link

slbvc commented Jan 2, 2024

Hello,

I encounter this error and I don't know how to solve this. Coudl you help me please ? Did I make a mistake ?
Thank you

`
COMMENTAIRES : Access token refresh is not required, remaining minutes until expiration: 52

COMMENTAIRES : Attempting to gather additional meta data from .intunewin file: myapp.intunewin

COMMENTAIRES : Successfully gathered additional meta data from .intunewin file

COMMENTAIRES : Start constructing basic layout of Win32 app body

COMMENTAIRES : Constructed the basic layout for 'EXE' Win32 app body type

COMMENTAIRES : Detection rule objects passed validation checks, attempting to add to existing Win32 app body

COMMENTAIRES : Retrieving default set of return codes for Win32 app body construction

COMMENTAIRES : Adding array of return codes to Win32 app body construction

COMMENTAIRES : Attempting to create Win32 app using constructed body converted to JSON content

COMMENTAIRES : POST https://graph.microsoft.com/Beta/deviceAppManagement/mobileApps

AVERTISSEMENT : An error occurred while creating the Win32 application. Error message: ModelValidationFailure: A value was encountered that has a type name that is incompatible with the metadata.

The value specified its type as 'microsoft.management.services.api.win32LobAppRegistryRequirement', but the type specified in the metadata is 'microsoft.management.services.api.win32LobAppDetection'.
`

Here is the script I use (tests with PS 5.1 and 7.3.0):

`

MSGraph connection infos

$Tenant = '0123-456-789-0123-4567-8901'
$ClientID = '0123-456-789-0123-4567-8901'
$ClientCert = (Get-ChildItem "Cert:\CurrentUser\My" | Where-Object { $_.Subject -like "Cblablablabla" })
$ClientCertThumbprint = $ClientCert.Thumbprint

Retrieve CountryCode

$RootPath = "C:\Temp\Intune\Sources"
#$ScriptName = $RootPath + "" + "MyAweSomeScript.ps1"
#$ScriptNamewoExt = "MyAweSomeScript"
#$CSVFile = $null
#$CSVFile = Import-Csv "$RootPath\ListofTagsToApply-Groups.csv" -Delimiter ";"

Set-Location $RootPath

$CountryName = $_.CountryName

$CountryCode = "CL"
$ScopeID = "31"

Package as .intunewin file

$SourceFolder = "C:\Temp\Intune\Sources"
$SetupFile = "MyAweSomeScript.ps1"
$OutputFolder = "C:\Temp\Intune\Output"
$Win32AppPackage = New-IntuneWin32AppPackage -SourceFolder $SourceFolder -SetupFile $SetupFile -OutputFolder $OutputFolder -Verbose -Force
#$IntuneWinFile = "C:\Temp\Intune\Output\MyAweSomeScript.intunewin"

Get meta data from .intunewin file

$IntuneWinFile = $Win32AppPackage.Path
$IntuneWinMetaData = Get-IntuneWin32AppMetaData -FilePath $IntuneWinFile

App properties

$DisplayName = "Apply Country code [$CountryCode] in registry"
$Description = "[$CountryCode] Set 2 registry keys to be used for tagging asset"
$Publisher = "MeAndMeJustMe"
$AppVersion = "v1.0.0"
$Developer = "MeAndMeJustMe"
$Owner = "MeAndMeJustMe"
#$Notes = ""
#$InformationURL = ""
#$PrivacyURL = ""
[boolean]$CompanyPortalFeaturedApp = $false
#$CategoryName = ""
$InstallExperience = "system"
$RestartBehavior = "suppress"
#[Int]MaximumInstallationTimeInMinutes = ""

Add new EXE Win32 app

$InstallCommandLine = "powershell.exe -ExecutionPolicy Bypass -File .\MyAweSomeScript-$CountryCode.ps1"
$UninstallCommandLine = "cmd.exe /c"

Create requirement rule for all platforms and Windows 10 20H2

$RequirementRule = New-IntuneWin32AppRequirementRule -Architecture "x64" -MinimumSupportedWindowsRelease "W10_1607"

$DetectRulesParam = @{
"Check32BitOn64System" = $false
"KeyPath" = "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\MyApp\EnhancedTags\GeoLoc"
"ValueName" = "Country"
"StringComparison" = $true
"StringComparisonOperator" = "equal"
"StringComparisonValue" = $CountryCode
}

$DetectionRule = New-IntuneWin32AppRequirementRuleRegistry @DetectRulesParam

Convert image file to icon

$ImageFile = "C:\Temp\Intune\Sources\MyLogo.png"
$Icon = New-IntuneWin32AppIcon -FilePath $ImageFile

Connect MS Grapah

Connect-MSIntuneGraph -TenantID $Tenant -ClientID $ClientID -ClientCert $ClientCert

Creating app

$params = @{
"FilePath" = $($IntuneWinFile)
"DisplayName" = $($DisplayName)
"Description" = $($Description)
"Publisher" = $($Publisher)
"AppVersion" = $($AppVersion)
"Developer" = $($Developer)
"Owner" = $($Owner)
"InstallExperience" = $($InstallExperience)
"RestartBehavior" = $($RestartBehavior)
"DetectionRule" = $($DetectionRule)
"RequirementRule" = $($RequirementRule)
#"ReturnCode" = $($ReturnCode)
"InstallCommandLine" = $($InstallCommandLine)
"UninstallCommandLine" = $($UninstallCommandLine)
"Icon" = $($Icon)
"CompanyPortalFeaturedApp" = $CompanyPortalFeaturedApp
}

Add-IntuneWin32App @params -Verbose -Debug

#Assignement
$Win32App = Get-IntuneWin32App -DisplayName $DisplayName -Verbose

$GrpID = (Get-MgGroup -Filter "DisplayName eq '$CountryCode-Devices'").id

Add-IntuneWin32AppAssignment -ID $Win32App.ID -GroupID $GrpID -GroupMode Include -Notification hideAll -Intent required -Target Group -Verbose

`

@NickolajA
Copy link
Member

I'm curious as well what's not working here. I suspect that the input object for the DetectionRule parameter is causing this issue. Could you test with a default, from the samples, object and see if the app gets created then? That will confirm if I'm on the right track here.

@NickolajA NickolajA self-assigned this Jan 5, 2024
@slbvc
Copy link
Author

slbvc commented Jan 13, 2024

Hello,
I will test next week with samples and other detection methods.

Best regards

@slbvc
Copy link
Author

slbvc commented Jan 19, 2024

Hello,

I have flatened this block:

$DetectRulesParam = @{
"Check32BitOn64System" = $false
"KeyPath" = "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\MyApp\EnhancedTags\GeoLoc"
"ValueName" = "Country"
"StringComparison" = $true
"StringComparisonOperator" = "equal"
"StringComparisonValue" = $CountryCode
}

So no use of splatting but full line:
$DetectionRule = New-IntuneWin32AppDetectionRuleRegistry -Check32BitOn64System $false -KeyPath "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\MyApp\EnhancedTags\GeoLoc" -StringComparisonOperator equal -StringComparison -ValueName Country -StringComparisonValue $CountryCode

And it is working.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants