[CmdletBinding()] param( [Parameter(Mandatory = $true)] [ValidateSet("Export","Import")] [string]$Action, [Parameter(Mandatory = $true)] [string]$TenantId, [string]$AppId, [string]$Secret, [string]$Certificate, [ValidateSet("AppOnly","Browser")] [string]$AuthMode = "AppOnly", [string]$RedirectUri, [string]$SettingsFile, [string]$BatchFile, [string]$NameFilter = "", [string[]]$ObjectTypes, [string]$ExportPath, [string]$ImportPath, [ValidateSet("alwaysImport","skipIfExist","replace","replace_with_assignments","update")] [string]$ImportType = "alwaysImport", [switch]$IncludeAssignments, [switch]$AddCompanyName, [switch]$IncludeScopeTags, [switch]$ReplaceDependencyIds ) $modulePath = Join-Path $PSScriptRoot "Headless/IntuneManagement.Headless.psd1" Import-Module $modulePath -Force $invokeParams = @{ Action = $Action TenantId = $TenantId AppId = $AppId AuthMode = $AuthMode SettingsFile = $SettingsFile BatchFile = $BatchFile NameFilter = $NameFilter ExportPath = $ExportPath ImportPath = $ImportPath ImportType = $ImportType IncludeAssignments = $IncludeAssignments AddCompanyName = $AddCompanyName IncludeScopeTags = $IncludeScopeTags ReplaceDependencyIds = $ReplaceDependencyIds } if($PSBoundParameters.ContainsKey("ObjectTypes")) { $invokeParams.ObjectTypes = $ObjectTypes } if($Secret) { $invokeParams.Secret = $Secret } elseif($Certificate) { $invokeParams.Certificate = $Certificate } if($RedirectUri) { $invokeParams.RedirectUri = $RedirectUri } Invoke-IntunePolicyAction @invokeParams