Core enhancements: - Expanded default export/import scope to ~45 object types including DeviceManagementIntents - Added -AllPages pagination support across Graph queries for large tenants - Invoke-GraphRequest now throws on 4xx/5xx instead of silently returning null - Added macOS Keychain fallback for secret retrieval in headless auth flow - Added NameSearchPattern/NameReplacePattern mutation support through export/import forms New toolkit scripts: - Bulk-AppAssignment.ps1: bulk-assign apps to groups/All Users/All Devices - Bulk-AssignmentManager.ps1: add/remove assignments for any policy type with correct @odata.type - Backup-Restore-Assignments.ps1: JSON backup with cross-tenant group resolution - Export-AssignmentsToCsv.ps1: CSV/Markdown documentation output - Bulk-RenamePolicies.ps1: regex search/replace and prefix mutations - Bulk-DeviceOperations.ps1: delete/retire/wipe/lock/sync with -WhatIf safeguards - Start-IntuneManagementTui.ps1: interactive terminal UI for headless operations - Create-IntuneManagementApp.ps1: helper for app registration setup Updated existing scripts: - Export-Policies.ps1 / Import-Policies.ps1: wired mutation params through - Start-HeadlessIntune.ps1: integrated TUI and new parameter forwarding
111 lines
2.9 KiB
PowerShell
111 lines
2.9 KiB
PowerShell
function Test-IsWindowsPlatform
|
|
{
|
|
[Environment]::OSVersion.Platform -eq [System.PlatformID]::Win32NT
|
|
}
|
|
|
|
function Expand-FileName
|
|
{
|
|
param([string]$Path)
|
|
if(-not $Path) { return $Path }
|
|
$expanded = [Environment]::ExpandEnvironmentVariables($Path)
|
|
if($expanded -like "~/*" -or $expanded -eq "~")
|
|
{
|
|
$expanded = $expanded -replace "^~", $HOME
|
|
}
|
|
return $expanded
|
|
}
|
|
|
|
function Initialize-IntuneManagementRuntime
|
|
{
|
|
[CmdletBinding()]
|
|
param(
|
|
[string]$View = "",
|
|
[switch]$ShowConsoleWindow,
|
|
[switch]$JSonSettings,
|
|
[string]$JSonFile,
|
|
[switch]$Silent,
|
|
[string]$SilentBatchFile,
|
|
[string]$TenantId,
|
|
[string]$AppId,
|
|
[string]$Secret,
|
|
[string]$Certificate,
|
|
[ValidateSet("AppOnly","Browser","DeviceCode")]
|
|
[string]$AuthMode = "AppOnly",
|
|
[string]$RedirectUri,
|
|
[string]$GraphEnvironment,
|
|
[string]$GCCType
|
|
)
|
|
|
|
$PSModuleAutoloadingPreference = "none"
|
|
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
|
|
|
|
$global:hideUI = $true
|
|
$global:SilentBatchFile = $SilentBatchFile
|
|
$global:TenantId = $TenantId
|
|
$global:AzureAppId = $AppId
|
|
$global:ClientSecret = $Secret
|
|
$global:ClientCert = $Certificate
|
|
$global:HeadlessAuthMode = $AuthMode
|
|
$global:MSALRedirectUri = $RedirectUri
|
|
$global:UseGraphEnvironment = $GraphEnvironment
|
|
$global:UseGCCType = $GCCType
|
|
$global:UseJSonSettings = ($JSonSettings -eq $true)
|
|
$global:JSonSettingFile = $JSonFile
|
|
|
|
if(-not $Silent)
|
|
{
|
|
Write-Warning "UI support has been removed. Continuing in headless mode."
|
|
}
|
|
|
|
if(-not $global:TenantId)
|
|
{
|
|
Write-Error "Tenant Id is missing. Use -TenantId <Tenant-guid>."
|
|
return
|
|
}
|
|
|
|
if($global:TenantId)
|
|
{
|
|
Write-Host "Using Tenant Id: $($global:TenantId)"
|
|
}
|
|
|
|
if($global:AzureAppId)
|
|
{
|
|
Write-Host "Using Azure App Id: $($global:AzureAppId)"
|
|
}
|
|
else
|
|
{
|
|
Write-Warning "Azure App Id is missing. Use -AppId <AppId>."
|
|
}
|
|
|
|
if($global:ClientSecret)
|
|
{
|
|
Write-Host "Using Azure App Secret"
|
|
}
|
|
elseif($global:ClientCert)
|
|
{
|
|
Write-Host "Using Azure App Certificate"
|
|
}
|
|
elseif($global:HeadlessAuthMode -eq "Browser")
|
|
{
|
|
Write-Host "Using browser authentication"
|
|
}
|
|
elseif($global:HeadlessAuthMode -eq "DeviceCode")
|
|
{
|
|
Write-Host "Using device code authentication"
|
|
}
|
|
else
|
|
{
|
|
Write-Warning "Azure App Secret or Certificate is missing. Use -Secret <Secret> or -Certificate <Certificate>."
|
|
}
|
|
|
|
if($global:UseJSonSettings)
|
|
{
|
|
Write-Host "Use json settings"
|
|
}
|
|
|
|
Import-Module (Join-Path (Split-Path -Parent $PSScriptRoot) "Core.psm1") -Force -Global
|
|
Start-CoreApp $View
|
|
}
|
|
|
|
Export-ModuleMember -Function Initialize-IntuneManagementRuntime, Test-IsWindowsPlatform, Expand-FileName
|