Indago.psd1

@{
    # Module identity
    RootModule           = 'Indago.psm1'
    ModuleVersion        = '0.5.0'
    GUID                 = 'b0269411-6c65-49f9-b9f9-4195117af5e7'
    Author               = 'Frantz Dhin'
    CompanyName          = 'ENVO IT A/S'
    Copyright            = '(c) 2026 Frantz Dhin. All rights reserved.'

    # Description (shown on PSGallery listing page)
    Description          = @'
Self-contained Windows admin toolkit designed for RMM/SYSTEM sessions.

Indago provides pre-built troubleshooting and repair scriptlets that
you can invoke with simple commands - no copy-paste, no special characters,
no script blocks, no pipe characters, no module downloads required.

The module includes a user-context execution engine (based on RunAsUser)
that uses Win32 CreateProcessAsUser to run tasks as the logged-on user
with admin elevation, without passwords ever touching the command line.

Key features:
- Zero external dependencies - everything is self-contained
- Type-friendly interface - Param1 through Param5, no braces or pipes needed
- Invisible user-context execution - no window flash, no Task Scheduler artifacts
- Metadata-driven scriptlet catalog - add tasks via JSON, no code changes
- Structured logging to C:\ProgramData\Indago\Logs
- RMM job breakaway support (CREATE_BREAKAWAY_FROM_JOB)
'@


    # Requirements
    PowerShellVersion    = '5.1'
    CompatiblePSEditions = @('Desktop')
    RequiredModules      = @()

    # Exports - explicit, no wildcards
    FunctionsToExport    = @(
        'Invoke-Indago',
        'Get-IndagoList',
        'Get-IndagoHelp',
        'Get-LoggedOnUser'
    )
    CmdletsToExport      = @()
    VariablesToExport    = @()
    AliasesToExport      = @()

    # Files to include in the package
    FileList             = @(
        'Indago.psd1',
        'Indago.psm1',
        'README.md',
        'LICENSE',
        'Public\Invoke-Indago.ps1',
        'Public\Get-IndagoList.ps1',
        'Public\Get-IndagoHelp.ps1',
        'Public\Get-LoggedOnUser.ps1',
        'Private\Invoke-AsUser.ps1',
        'Private\Resolve-LoggedOnUser.ps1',
        'Private\Write-WinLog.ps1',
        'Private\Import-ScriptletCatalog.ps1',
        'Scriptlets\ScriptletCatalog.json',
        'Tests\Invoke-SelfTest.ps1'
    )

    # PSGallery metadata
    PrivateData          = @{
        PSData = @{
            # Tags for discoverability on PSGallery (max 4000 chars total)
            Tags                     = @(
                'Windows',
                'Admin',
                'RMM',
                'SYSTEM',
                'Troubleshooting',
                'Repair',
                'WindowsUpdate',
                'Defender',
                'Endpoint',
                'Intune',
                'Sysadmin',
                'RunAsUser',
                'UserContext',
                'MSP',
                'ZohoAssist',
                'ConnectWise',
                'Datto',
                'NinjaRMM',
                'RemoteManagement',
                'PSEdition_Desktop'
            )

            # License
            LicenseUri               = 'https://github.com/fdhin/Indago/blob/main/LICENSE'

            # Project page
            ProjectUri               = 'https://github.com/fdhin/Indago'

            # Release notes (shown on PSGallery version page)
            ReleaseNotes             = @'
## v0.5.0 (2026-04-05)

Complete Tier 5 diagnostic suite -- 30 scriptlets across 5 categories.

### Commands
- Invoke-Indago: Run pre-built troubleshooting/repair scriptlets by name
- Get-IndagoList: Browse available scriptlets with category filtering
- Get-IndagoHelp: Detailed help for each scriptlet with usage examples
- Get-LoggedOnUser: Show the currently logged-on interactive user

### Windows Update Suite (7 scriptlets)
- WU001 WUQuickHealth: Service health, disk space, reboot state, failure history with HRESULT translation
- WU002 WUComponentHealth: CBS store corruption, DISM health, pending.xml, SessionsPending backlog
- WU003 WUNetworkCheck: WSUS/WUfB config, endpoint connectivity, proxy/PAC detection, metered connection
- WU004 WUPendingUpdates: Pending update enumeration with KB cross-reference and stale detection
- WU005 WUDriverConflict: Driver update isolation, WU driver policy, co-installer detection, rollback history
- WU006 WUHistoryDump: Full update timeline with HRESULT translation, failure clustering, KB gap detection
- WU007 WUEnvironmentAudit: Feature update eligibility, safeguard holds, edition/build/EOL, storage reserves

### Defender Suite (7 scriptlets)
- DEF001 DEFStatusTriage: Security Center AV decode, Defender mode, RTP, definitions, MDE sensor, signal gaps
- DEF002 DEFExclusions: SYSTEM + user-context exclusion enumeration, ASR rule audit, risk scoring
- DEF003 DEFThreatHistory: Threat detection timeline, quarantine inventory, remediation failure analysis
- DEF004 DEFUpdatePipeline: Definition update channel diagnostics, MMPC connectivity, fallback chain
- DEF005 DEFScanHealth: Scan execution history, resource impact, scheduled task validation, offline scan
- DEF006 DEFPlatformVersion: Platform/engine/definition version audit, event log warnings, update services
- DEF007 DEFEventAnalysis: Defender event log timeline from Operational log with 26-event taxonomy

### BitLocker Suite (8 scriptlets)
- BL001 BLStatusSnapshot: Volume status, ghost-state detection, BDESVC health
- BL002 BLTpmHealth: TPM presence, spec version, firmware CVEs, lockout, provisioning readiness
- BL003 BLHardwarePrereqs: UEFI/Secure Boot, GPT, system partition, Modern Standby, OEM quirks
- BL004 BLIntunePolicy: Intune join state, CSP registry, IME log, MDM enrollment health
- BL005 BLEscrowCheck: Escrow pipeline, AAD identity, escrow events, connectivity, protector status
- BL006 BLPolicyConflict: GPO vs MDM conflict detection, cipher/TPM decode, orphaned GPO settings
- BL007 BLEventAnalysis: Event log timeline, 16 tracked Event IDs, HRESULT translation map
- BL008 BLReadinessCheck: Encryption readiness dry run with go/no-go verdict

### Firewall Suite (4 scriptlets)
- FW001 FWStatusTriage: Profile status, adapter correlation, Security Center cross-reference, MpsSvc
- FW002 FWPolicyConflict: Local/GPO/MDM policy comparison, EnableFirewall=0, MDMWinsOverGP
- FW003 FWThirdParty: Security Center enumeration, productState decode, 14-vendor remnant scan, WFP
- FW004 FWRuleAudit: Allow-inbound rule analysis, any/any detection, port exposure, stale rules

### General (4 scriptlets)
- NET001-NET003: Network diagnostics (adapter, DNS, connectivity)
- PRF001: System profile overview
- APP001-APP002: Winget patching (system + user scope)
- INT001: Intune compliance force check

### Engine
- User-context execution via Win32 CreateProcessAsUser (based on RunAsUser)
- No passwords, no Task Scheduler artifacts, invisible to the logged-on user
- RMM job breakaway support (CREATE_BREAKAWAY_FROM_JOB)
- Automatic JSON output deserialization for user-context tasks

### Previous
- v0.1.5 (2026-04-04): Initial release with 7 scriptlets
'@


            # Minimum PowerShell Gallery module requirements
            RequireLicenseAcceptance = $false
        }
    }
}