IntuneScriptLab.psd1

@{
    # Module manifest for IntuneScriptLab
    RootModule = 'IntuneScriptLab.psm1'
    ModuleVersion = '0.27.0'
    GUID = '3f6b2c9e-7d41-4a8f-9c2b-5e0d8a1f4b76'
    Author = 'Jeffrey Stuhr'
    CompanyName = ''
    Copyright = '(c) 2026 Jeffrey Stuhr. All rights reserved.'
    # Two lines, within the repository's 115-character limit; the README carries the long form
    Description = @'
Test Intune scripts before Intune does: static rules, a runtime harness, Pester assertions, a Graph
pre-flight over the tenant's deployed scripts and readers for the agent's logs
'@


    # The analyzer itself runs anywhere. The rules describe Windows PowerShell 5.1 behaviour
    # because that is what the Intune Management Extension runs scripts with.
    PowerShellVersion = '5.1'
    CompatiblePSEditions = @('Desktop', 'Core')
    RequiredModules = @()
    FormatsToProcess = @('IntuneScriptLab.Format.ps1xml')

    FunctionsToExport = @(
        'Test-IntuneScript',
        'Invoke-IntuneDetectionTest',
        'Invoke-IntuneRemediationTest',
        'Invoke-IntunePlatformScriptTest',
        'Invoke-IntuneWin32AppTest',
        'Invoke-IntuneRequirementTest',
        'Test-IntuneWin32Rule',
        'Test-IntuneWin32Requirement',
        'Get-IntuneAgentLog',
        'Get-IntuneAgentTimeline',
        'Export-IntuneAgentDiagnostic',
        'Get-IntuneAnalyzerRulePath',
        'Test-IntuneDeployedScript',
        'Compare-IntuneDeployedScript',
        'Get-IntuneScriptHealth',
        'Export-IntuneFindingSarif',
        'Repair-IntuneScript',
        'Test-IntuneAssignmentFilter',
        'Assert-HaveIntuneStatus',
        'Assert-BeIntuneDetected',
        'Assert-NotBeIntuneDetected',
        'Assert-HaveIntuneRunState',
        'Assert-PassIntuneAnalysis',
        'Assert-BeIntuneApplicable',
        'Assert-NotBeIntuneApplicable'
    )
    CmdletsToExport = @()
    VariablesToExport = @()
    AliasesToExport = @(
        'Should-HaveIntuneStatus',
        'Should-BeIntuneDetected',
        'Should-NotBeIntuneDetected',
        'Should-HaveIntuneRunState',
        'Should-PassIntuneAnalysis',
        'Should-BeIntuneApplicable',
        'Should-NotBeIntuneApplicable'
    )

    PrivateData = @{
        PSData = @{
            Tags = @('Intune', 'Remediation', 'Win32', 'PSScriptAnalyzer', 'Lint', 'Endpoint', 'Pester')
            LicenseUri = 'https://github.com/fadwen/IntuneScriptLab/blob/main/LICENSE'
            ProjectUri = 'https://github.com/fadwen/IntuneScriptLab'
            ReleaseNotes = @'
0.27.0 - Harness: a user-context run started from PowerShell 7 gave the 5.1 host PowerShell 7's
        module path (no Cert: drive, Security cmdlets failing to load); -Credential did not find
        a Microsoft Entra account's session, because Windows names such an account after its
        display name and not its sign-in name; a refused folder grant lost its message under
        -ErrorAction Stop on 5.1. Rules, from a tenth validation round: IslPowerShell7Syntax says
        that a 7-only cmdlet, parameter or -Parallel fails where it stands and the script carries
        on, and flags Out-File -Encoding utf8NoBOM, which was listed and never matched;
        IslInteractiveCall warns instead of erring when Get-Credential -Credential is handed
        something that may be a built credential; IslContextIssue's drive-letter finding is
        Information, since the letter cannot say whether it is a mapped drive.
        Repair-IntuneScript no longer turns 'return 1; exit 1' into '1; exit 0; exit 1' with no
        finding left. Help: what Invoke-ScriptAnalyzer -Severity does with the custom rules. See
        CHANGELOG.md.
0.26.0 - Every claim in the README, help, about topic, rule reference and examples was checked
        against the code and by running it, and what did not hold was fixed: -Settings never
        reached the pre-flight or the drift compare; -Id alone selected every policy;
        Repair-IntuneScript -WhatIf on a folder returned nothing; the encoding fix corrupted
        ANSI files; a directive earned the assumed-context note; a settings file's ExcludeRule
        beat an explicit -IncludeRule; Should-PassIntuneAnalysis failed on a pipeline of files;
        SARIF rule levels, outside-root URIs and relative output paths; a missing script path
        returned a result; timeline -Id and relationship reports; case-insensitive drift
        compare; All devices for a user-context app; -SkipAnalysis hiding 'assigned to nobody';
        -ne/-notIn filter values; a bare -Confirm; Stop as a guard; using module and two
        parameters in the PowerShell 7 rule; Win32 scripts in the size rule. Help corrected
        throughout. See CHANGELOG.md.
0.25.0 - The first release from the module's own repository, github.com/fadwen/IntuneScriptLab, and
        the first published to the PowerShell Gallery. Nothing any command does has changed: the
        build scripts moved under Build\, the manifest points at the new repository, and releases
        run from a version tag through the repository's release workflow.
Earlier versions, 0.1.0 to 0.24.0: CHANGELOG.md, which ships with the module.
'@

            RequireLicenseAcceptance = $false
        }
    }
}