IntuneScriptLab.psd1

@{
    # Module manifest for IntuneScriptLab
    RootModule = 'IntuneScriptLab.psm1'
    ModuleVersion = '0.34.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.34.0 - Evidence correction. Test-IntuneDeployedScript cited the round 9 include-plus-exclude
        experiment as a policy no device runs; the device has run it every hour since, because the
        service drops the exclusion and keeps the include. The evidence names the two experiments
        that do show a policy without an include never running, and Findings records the corrected
        result; the command's verdict, silence on such a policy, was already right. A file
        doesNotExist finding now cites the experiment that exists. The validation kit restarts the
        agent by stopping its process, since Restart-Service restarted nothing, and its lab scripts
        and docs are current. See CHANGELOG.md.
0.33.0 - The CI pieces, after a run against a repository laid out the way the templates describe.
        The gate script no longer analyzes a Pester suite next to the scripts or the contents of a
        Win32 app's Package folder, both of which the suite template puts there and both of which
        failed a build at -FailOn Warning for findings that do not apply to them; its GitHub
        annotations percent-encode the file and title values as well as the message.
        Export-IntuneFindingSarif describes the assignment, filter and schedule rules, gives a
        mixed-severity rule the level of its worst finding, and writes a policy check, which has no
        script behind it, as a result without a location instead of throwing. The workflow template
        uses checkout@v7 and upload-sarif@v4; the suite template names its static tests by package
        and runs the device's own 64-bit host, so it works on Windows on ARM. See CHANGELOG.md.
0.32.0 - Get-IntuneAgentTimeline read Kind as Unknown for a policy whose lines all sat in a rolled
        log file (HealthScripts-20260925-101500 lost only its time part); it reads Remediation or
        Win32App like one from the current file. The Policy column of the health report and drift
        tables is 40 characters wide, so a long policy name stays on one line. The README's log
        blocks show the Agent abbreviation and the list form of the diagnostic result. See
        CHANGELOG.md.
Earlier versions, 0.1.0 to 0.31.0: CHANGELOG.md, which ships with the module.
'@

            RequireLicenseAcceptance = $false
        }
    }
}