Commit Graph

22 Commits

Author SHA1 Message Date
tomas.kracmar 122aa2d4e3 fix(reporting): add Platform column and clean up Windows artifacts
- Export-SettingsReport.py: add Platform column for Settings Catalog
  (platforms field) and legacy policies (platform/platformType or
  @odata.type inference)
- MSGraph.psm1: store GraphMetaData.xml in cross-platform data folder
  (Get-CloudApiDataFolder) instead of literal %LOCALAPPDATA% path
- MSALAuthentication.psm1: skip TokenCacheHelperEx on non-Windows with
  an info log instead of failing on missing ProtectedData.dll
- .gitignore: remove literal %LOCALAPPDATA% patterns
- AGENTS.md, CHANGELOG: document reporting and cross-platform fixes
2026-06-22 11:56:55 +02:00
tomas.kracmar d3e0769799 release: v4.1.0 — restructure entry points, add CIS baselines, reporting tools and fzf hints
- Restructure launchers: Start-IntuneToolkit.ps1 moves to repo root;
  Start-HeadlessIntune.ps1 moves to Scripts/; TUI helper moves to Scripts/Private/
- Add AGENTS.md with project architecture, entry points, and security notes
- Add CIS M365 baseline assets (CISM365-v7, M365-CIS-Rapid) and reporting scripts
- Add Python reporting utilities (Export-SettingsReport, Export-AssignmentReport,
  Export-ObjectInventoryReport) and CA wizard helpers
- Update Deploy-IntuneBaseline.ps1 with Merge conflict resolution, ReportPath,
  and optimized group loading
- Update Initialize-IntuneAuth.ps1 with -RotateSecret and configurable secret expiry
- Update Extensions for Settings Catalog definition auto-export
- Update README with v4.1.0, new entry points and script catalog
- Bump VERSION to 4.1.0
- Harden .gitignore against .DS_Store, __pycache__, .venv-pdf/, local exports,
  Settings.json and IntuneManagement.log
2026-06-14 15:24:42 +02:00
tomas.kracmar 70679cba48 v4.0.1: per-user app naming, auth deletion, TUI onboarding flow, PIM docs 2026-04-16 15:40:33 +02:00
tomas.kracmar ab6817f59b feat(ui): detect missing fzf and show installation hints 2026-04-16 11:34:03 +02:00
tomas.kracmar 18fc5190d8 feat(launcher): add 'Refresh tenant names' menu option
- Menu entry 13 re-queries Graph /organization for every saved tenant
- Updates cached TenantName values in Settings.json
- Refreshes the active tenant display in the menu header
2026-04-14 19:51:16 +02:00
tomas.kracmar e8ad3f6b96 feat(launcher): tenant picker with name resolution in TUI
- Start-IntuneToolkit.ps1 now shows a tenant picker as the first step
  when -TenantId is not provided.
- Lists saved tenants from Settings.json, attempting to display cached
  tenant names alongside GUIDs.
- Offers '[+ Onboard new tenant]' option for entering new tenants.
- Automatically resolves unknown tenant names via Graph /organization
  and caches them back to Settings.json for future use.
2026-04-14 19:43:54 +02:00
tomas.kracmar 6703625c00 fix(rename): guard Add prefix against double-prefixing
Skip objects whose displayName or description already starts with
the requested prefix. This makes Add prefix idempotent.
2026-04-14 19:02:06 +02:00
tomas.kracmar cd1c004f4b fix(rename): add retry logic for transient 5xx/429 errors
Settings Catalog and other Graph endpoints occasionally return 500
InternalServerError on PATCH. Retry up to 3 times with a 2s delay
to improve reliability for bulk rename operations.
2026-04-14 18:58:20 +02:00
tomas.kracmar 07c25e897a fix(assignments): use bulk /assign endpoint for removals on all types
Settings Catalog and other bulk-assign types do not support DELETE on
individual assignments. Removal now reloads existing assignments,
filters out selected targets, sanitizes remaining payloads, and
re-POSTs to <API>/<id>/assign. This mirrors the add flow and works
universally across all supported object types.
2026-04-14 18:50:02 +02:00
tomas.kracmar 814c1d116c fix(tui): remove space:toggle binding from fzf to allow searching with spaces
--bind=space:toggle prevented typing spaces in search queries.
fzf --multi already supports Tab for selection by default.
2026-04-14 18:44:54 +02:00
tomas.kracmar 33e1118cc6 fix: restore .value access when using -AllPages on group queries
Invoke-GraphRequest with -AllPages returns the full response object
with accumulated items in .value, not a flat array.
2026-04-14 18:39:50 +02:00
tomas.kracmar 77f7372d44 fix: fetch all groups via -AllPages for large tenants
Replaces default 100-item page limits and =999 workarounds
with -AllPages on group queries across assignment and baseline scripts.
Enables full fzf inline search/filter for group selection.
2026-04-14 18:36:23 +02:00
tomas.kracmar 773ab12901 fix(launcher): strip unsupported auth params when calling Initialize-IntuneAuth 2026-04-14 18:27:40 +02:00
tomas.kracmar e13d14edcb feat(toolkit): complete macOS Intune Toolkit v1
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
2026-04-14 15:11:09 +02:00
tomas.kracmar 0ddd21ab14 feat(launcher): add baseline deployer to unified menu
- Adds 'Deploy baseline' and 'Deploy baseline (dry-run / WhatIf)' to Start-IntuneToolkit.ps1
- Ensures WhatIf flag is cleared between menu iterations
2026-04-14 15:05:15 +02:00
tomas.kracmar c4b8f4aaf6 feat(baseline): declarative Intune baseline deployer
- Add Deploy-IntuneBaseline.ps1 for YAML-driven policy + assignment deployment
- Add ConvertTo-IntuneBaseline.ps1 to convert export folders to baseline manifests
- Add example OpenIntuneBaseline YAML in Baselines/
- Supports mutations, group auto-creation, idempotency, and WhatIf mode
2026-04-14 14:59:29 +02:00
tomas.kracmar 87b7af25a7 feat(auth): sync full Graph permission set and patch existing apps
- Unified required Microsoft Graph app roles in Initialize-IntuneAuth.ps1
- Added permission patching for existing app registrations
- Logs the change and operations for audit
2026-04-14 12:15:14 +02:00
tomas.kracmar 9dace83cff Make browser auth app id optional 2026-04-08 19:10:45 +02:00
tomas.kracmar 239e3ec16e Add browser auth for headless runs 2026-04-08 16:09:30 +02:00
tomas.kracmar c803a00df7 Strip legacy UI and keep headless runtime 2026-04-08 15:35:04 +02:00
tomas.kracmar 8fe71c0078 Add headless macOS CLI workflow 2026-04-08 15:18:32 +02:00
Mikael Karlsson f5613442bd 3.9.3 2023-12-11 18:58:13 +11:00