IntuneManagement 4.0.0-beta1

This commit is contained in:
Mikael Karlsson
2026-09-23 19:13:09 +10:00
commit 7869619510
892 changed files with 577109 additions and 0 deletions
+378
View File
@@ -0,0 +1,378 @@
#ImportOrder 220
#########################################################################################
#
# Intune Info Group
#
# Read-only objects ported from the original project's "Intune Info" view
# (Extensions/EndpointManagerInfo.psm1). Every type here is Export/View only:
# no import, delete, copy or assignment support. Android Google Play status
# and Tenant Settings are single-object endpoints (_SingleObject; the body IS
# the row) with a synthesized displayName because the API has none.
#
#########################################################################################
[Diagnostics.CodeAnalysis.SuppressMessageAttribute("TypeNotFound","", Justification = "")]
class IntuneInfoGroup : IntunePolicyGroupBase
{
IntuneInfoGroup() : Base()
{
$this.Init()
}
Init()
{
$this._ID = "IntuneInfo"
# Templates are this group's substance: Version fills for both template
# kinds, State for templates, VPP tokens and the Google Play binding.
$this._ExtraColumns = @("Version", "State")
$this._Name = "Intune Info"
$this._Icon = "Report"
$this._ShowButtons = @("Export","View")
}
}
#########################################################################################
#
# Baseline Templates - Intent
#
#########################################################################################
class BaselineTemplatesType : IntunePolicyTypeBase
{
BaselineTemplatesType() : Base()
{
$this.Init()
}
Init()
{
$this._PolicyGroup = (Get-SingletonObject "IntuneInfoGroup")
$this._PolicyName = "Baseline Templates - Intent"
$this._ID = "BaselineTemplates"
$this._ExtraColumns = @("Version", "State")
$this._API = "deviceManagement/templates"
$this._Icon = "SecurityBaselines"
$this._Permissions = @("DeviceManagementConfiguration.Read.All")
$this._ObjectClass = "BaselineTemplatesObject"
$this._ShowButtons = @("Export","View")
$this._SupportsAssignments = $false
$this._ExpandAssignmentsList = $false
if($null -ne $this._PolicyGroup) {
$this._PolicyGroup.AddPolicyType($this)
}
}
}
Class BaselineTemplatesObject : IntunePolicyBase
{
BaselineTemplatesObject([PSCustomObject]$JsonObj) : Base($JsonObj) { $this.Init() }
BaselineTemplatesObject() : Base()
{
$this.Init()
}
Hidden Init()
{
$this._PolicyType = (Get-SingletonObject "BaselineTemplatesType")
# Same vocabulary as the Settings Catalog templates, so one Version / State
# column reads evenly across the Intune Info group.
Add-ObjectProperty $this "Version" { if($this.JsonObject) { $this.JsonObject.versionInfo } }
Add-ObjectProperty $this "State" { if($null -eq $this.JsonObject) { $null } elseif($this.JsonObject.isDeprecated -eq $true) { "Deprecated" } else { "Active" } }
}
}
#########################################################################################
#
# Baseline Templates - Settings Catalog
#
#########################################################################################
class BaselineTemplatesSettingsCatalogType : IntunePolicyTypeBase
{
BaselineTemplatesSettingsCatalogType() : Base()
{
$this.Init()
}
Init()
{
$this._PolicyGroup = (Get-SingletonObject "IntuneInfoGroup")
$this._PolicyName = "Templates - Settings Catalog"
$this._ID = "BaselineTemplatesSettingsCatalog"
$this._ExtraColumns = @("Version", "State")
$this._API = "deviceManagement/configurationPolicyTemplates"
$this._Icon = "SecurityBaselines"
$this._Permissions = @("DeviceManagementConfiguration.Read.All")
$this._ObjectClass = "BaselineTemplatesSettingsCatalogObject"
$this._ShowButtons = @("Export","View")
$this._SupportsAssignments = $false
$this._ExpandAssignmentsList = $false
if($null -ne $this._PolicyGroup) {
$this._PolicyGroup.AddPolicyType($this)
}
}
}
Class BaselineTemplatesSettingsCatalogObject : IntunePolicyBase
{
BaselineTemplatesSettingsCatalogObject([PSCustomObject]$JsonObj) : Base($JsonObj) { $this.Init() }
BaselineTemplatesSettingsCatalogObject() : Base()
{
$this.Init()
}
Hidden Init()
{
$this._PolicyType = (Get-SingletonObject "BaselineTemplatesSettingsCatalogType")
Add-ObjectProperty $this "Version" { if($this.JsonObject) { $this.JsonObject.displayVersion } }
Add-ObjectProperty $this "State" { if($this.JsonObject) { ConvertTo-DisplayWords $this.JsonObject.lifecycleState } }
}
}
#########################################################################################
#
# Apple VPP Tokens
#
#########################################################################################
class AppleVPPTokensType : IntunePolicyTypeBase
{
AppleVPPTokensType() : Base()
{
$this.Init()
}
Init()
{
$this._PolicyGroup = (Get-SingletonObject "IntuneInfoGroup")
$this._PolicyName = "Apple VPP Tokens"
$this._ID = "AppleVPPTokens"
$this._ExtraColumns = @("State")
$this._HasPlatform = $false
# Endpoint rejects a name $filter (verified live 2026-08-27) - searches filter client-side.
$this._SupportsNameFilter = $false
$this._API = "deviceAppManagement/vppTokens"
$this._Icon = "AppleVPPTokens"
$this._Permissions = @("DeviceManagementApps.Read.All")
$this._ObjectClass = "AppleVPPTokensObject"
$this._NameProperty = "appleId"
$this._ShowButtons = @("Export","View")
$this._SupportsAssignments = $false
$this._ExpandAssignmentsList = $false
if($null -ne $this._PolicyGroup) {
$this._PolicyGroup.AddPolicyType($this)
}
}
}
Class AppleVPPTokensObject : IntunePolicyBase
{
AppleVPPTokensObject([PSCustomObject]$JsonObj) : Base($JsonObj) { $this.Init() }
AppleVPPTokensObject() : Base()
{
$this.Init()
}
Hidden Init()
{
$this._PolicyType = (Get-SingletonObject "AppleVPPTokensType")
Add-ObjectProperty $this "State" { if($this.JsonObject) { ConvertTo-DisplayWords $this.JsonObject.state } }
}
}
#########################################################################################
#
# Apple Enrollment Tokens (DEP / Apple Business Manager)
#
#########################################################################################
class AppleEnrollmentTokensType : IntunePolicyTypeBase
{
AppleEnrollmentTokensType() : Base()
{
$this.Init()
}
Init()
{
$this._PolicyGroup = (Get-SingletonObject "IntuneInfoGroup")
$this._PolicyName = "Apple Enrollment Tokens"
$this._ID = "AppleEnrollmentTokens"
$this._ExtraColumns = @("State")
$this._HasPlatform = $false
# Endpoint rejects a name $filter (verified live 2026-08-27) - searches filter client-side.
$this._SupportsNameFilter = $false
$this._API = "deviceManagement/depOnboardingSettings"
$this._QueryList = "?`$top=100"
$this._Icon = "AppleEnrollmentTokens"
$this._Permissions = @("DeviceManagementServiceConfig.Read.All")
$this._ObjectClass = "AppleEnrollmentTokensObject"
$this._NameProperty = "tokenName"
$this._ShowButtons = @("Export","View")
$this._SupportsAssignments = $false
$this._ExpandAssignmentsList = $false
if($null -ne $this._PolicyGroup) {
$this._PolicyGroup.AddPolicyType($this)
}
}
}
Class AppleEnrollmentTokensObject : IntunePolicyBase
{
AppleEnrollmentTokensObject([PSCustomObject]$JsonObj) : Base($JsonObj) { $this.Init() }
AppleEnrollmentTokensObject() : Base()
{
$this.Init()
}
Hidden Init()
{
$this._PolicyType = (Get-SingletonObject "AppleEnrollmentTokensType")
# A DEP token has no state field; whether it has expired is the state that
# matters, and it lines up with the VPP token's Valid / Expired.
Add-ObjectProperty $this "State" {
if($null -eq $this.JsonObject -or -not $this.JsonObject.tokenExpirationDateTime) { return $null }
$exp = [DateTime]::MinValue
if([DateTime]::TryParse([string]$this.JsonObject.tokenExpirationDateTime, [Globalization.CultureInfo]::InvariantCulture, [Globalization.DateTimeStyles]::RoundtripKind, [ref]$exp)) {
if($exp -lt (Get-Date)) { "Expired" } else { "Valid" }
}
}
}
}
#########################################################################################
#
# Android Google Play (managed store account status - single object)
#
#########################################################################################
class AndroidGooglePlayType : IntunePolicyTypeBase
{
AndroidGooglePlayType() : Base()
{
$this.Init()
}
Init()
{
$this._PolicyGroup = (Get-SingletonObject "IntuneInfoGroup")
$this._PolicyName = "Android Google Play"
$this._ID = "AndroidGooglePlay"
$this._ExtraColumns = @("State")
# Platform default: the endpoint serves exactly one platform and the
# objects carry no platforms/platformType field, so the column would
# otherwise be blank (Managed Google Play is the Android Enterprise
# connection).
$this._PlatformName = Get-LanguageString "Platform.androidEnterprise" -IgnoreMissing
$this._API = "deviceManagement/androidManagedStoreAccountEnterpriseSettings"
$this._Icon = "AndroidGooglePlay"
$this._Permissions = @("DeviceManagementConfiguration.Read.All")
$this._ObjectClass = "AndroidGooglePlayObject"
$this._ShowButtons = @("Export","View")
$this._SupportsAssignments = $false
$this._ExpandAssignmentsList = $false
$this._SingleObject = $true
$this._HasPageSizeSupport = $false
$this._SkipAddIDOnFileName = $true
if($null -ne $this._PolicyGroup) {
$this._PolicyGroup.AddPolicyType($this)
}
}
[IntunePolicyBase]GetObject([PSCustomObject]$JsonObj)
{
# The settings object has no displayName - synthesize one so the grid
# row and the export file name aren't blank.
if($JsonObj -and -not $JsonObj.PSObject.Properties['displayName']) {
$JsonObj | Add-Member -MemberType NoteProperty -Name 'displayName' -Value 'Managed Google Play' -Force
}
return ([IntunePolicyTypeBase]$this).GetObject($JsonObj)
}
}
Class AndroidGooglePlayObject : IntunePolicyBase
{
AndroidGooglePlayObject([PSCustomObject]$JsonObj) : Base($JsonObj) { $this.Init() }
AndroidGooglePlayObject() : Base()
{
$this.Init()
}
Hidden Init()
{
$this._PolicyType = (Get-SingletonObject "AndroidGooglePlayType")
Add-ObjectProperty $this "State" { if($this.JsonObject) { ConvertTo-DisplayWords $this.JsonObject.bindStatus } }
}
}
#########################################################################################
#
# Tenant Settings (Intune service settings - single object)
#
#########################################################################################
class TenantSettingsType : IntunePolicyTypeBase
{
TenantSettingsType() : Base()
{
$this.Init()
}
Init()
{
$this._PolicyGroup = (Get-SingletonObject "IntuneInfoGroup")
$this._PolicyName = "Tenant Settings"
$this._ID = "TenantSettings"
$this._HasPlatform = $false
$this._API = "deviceManagement/settings"
$this._Icon = "TenantSettings"
$this._Permissions = @("DeviceManagementConfiguration.Read.All")
$this._ObjectClass = "TenantSettingsObject"
$this._ShowButtons = @("Export","View")
$this._SupportsAssignments = $false
$this._ExpandAssignmentsList = $false
$this._SingleObject = $true
$this._HasPageSizeSupport = $false
$this._SkipAddIDOnFileName = $true
if($null -ne $this._PolicyGroup) {
$this._PolicyGroup.AddPolicyType($this)
}
}
[IntunePolicyBase]GetObject([PSCustomObject]$JsonObj)
{
# deviceManagement/settings has neither id nor displayName - synthesize
# the name so the grid row and the export file name aren't blank.
if($JsonObj -and -not $JsonObj.PSObject.Properties['displayName']) {
$JsonObj | Add-Member -MemberType NoteProperty -Name 'displayName' -Value 'Intune Tenant Settings' -Force
}
return ([IntunePolicyTypeBase]$this).GetObject($JsonObj)
}
}
Class TenantSettingsObject : IntunePolicyBase
{
TenantSettingsObject([PSCustomObject]$JsonObj) : Base($JsonObj) { $this.Init() }
TenantSettingsObject() : Base()
{
$this.Init()
}
Hidden Init()
{
$this._PolicyType = (Get-SingletonObject "TenantSettingsType")
}
}