PSSecurity.psd1

@{
    RootModule           = 'PSSecurity.psm1'
    ModuleVersion        = '2.0.0'
    CompatiblePSEditions = 'Core'
    GUID                 = '01a0121d-ee0e-7b97-b54f-7d7a978cf8fc'
    Author               = 'Andres Quesada'
    CompanyName          = 'Quesada Works'
    Copyright            = '(c) 2026 Andres Quesada. Released under the MIT License.'
    Description          = 'A cross-platform PowerShell module for auditing and hardening Windows and Linux, built for CMMC Level 2.'
    PowerShellVersion    = '7.4'

    # Every public function. Platform-specific functions are defined only on their
    # platform, so each system exports the subset that exists there.
    FunctionsToExport    = @(
        'Add-UnixFileMode'
        'Compare-MegaHash'
        'Compress-FileTree'
        'Convert-CommentHelpToMarkdown'
        'Deploy-LinuxConfiguration'
        'Deploy-PSProfile'
        'Get-AclItem'
        'Get-ApplicationSignatureAudit'
        'Get-ScheduledTaskAudit'
        'Get-SshdConfiguration'
        'Get-SudoersAudit'
        'Get-UacConfiguration'
        'Get-UnixFileMode'
        'Import-Ubuntu'
        'Install-AzureDevOpsAgent'
        'Install-DpkgPwsh'
        'Install-Sftp'
        'Invoke-Sudo'
        'Join-MegaHash'
        'Measure-OwnerAnomaly'
        'New-LocalAdminUser'
        'New-SecurityCertificate'
        'New-WindowsUserProfile'
        'Protect-Item'
        'Remove-App'
        'Remove-ProvisionedApp'
        'Search-PatternInFile'
        'Set-AclItemOwner'
        'Set-LinuxFilePermission'
        'Set-UacConsentOnly'
        'Set-UacRequirePassword'
        'Unprotect-Item'
        'Write-DirectoryHash'
    )
    CmdletsToExport      = @()
    VariablesToExport    = @()
    AliasesToExport      = @()

    PrivateData          = @{
        PSData = @{
            Tags         = @(
                'Security', 'Hardening', 'Audit', 'Compliance', 'CMMC', 'NIST', 'NIST800-171', 'CUI', 'CIS',
                'ACL', 'Permissions', 'Ownership', 'UAC', 'Authenticode', 'CodeSigning', 'EFS', 'Encryption',
                'ScheduledTask', 'AppX', 'Bloatware', 'Hash', 'FileIntegrity', 'FedRAMP',
                'Sudo', 'Sudoers', 'SUID', 'Sysctl', 'Kernel', 'SSH', 'OpenSSH', 'Sshd', 'SFTP',
                'Certificate', 'WSL', 'AzureDevOps', 'DevSecOps', 'SysAdmin', 'CrossPlatform',
                'Windows', 'Linux', 'PSEdition_Core'
            )
            LicenseUri   = 'https://github.com/andmigque/PSSecurity/blob/main/LICENSE'
            ProjectUri   = 'https://github.com/andmigque/PSSecurity'
            ReleaseNotes = @'
2.0.0

- Linux hardening is now configuration files in Config/Linux, deployed by Deploy-LinuxConfiguration.
- Set-SysctlHardening, Set-ModprobeBlacklist, and Set-CoreDumpPolicy are removed.
- Set-LinuxFilePermission applies Config/LinuxFilePermission.psd1.
- Set-CronPermission and Set-HomeDirectoryPermission are removed.
- Set-LoginDefPolicy is removed: /etc/login.defs differs by distribution.
- Get-SuidBinary, Get-WorldWritableFile, and Set-StickyBitOnWorldWritable are replaced by Get-UnixFileMode and Add-UnixFileMode.
- Get-SshdConfiguration and Get-SudoersAudit return one object per setting or rule instead of a report object.
- Install-DpkgPwsh76 is renamed Install-DpkgPwsh.
- Get-ApplicationSignatureAudit: -Throttle is renamed -ThrottleLimit.
- New-SecurityCertificate: -Subdomains is renamed -Subdomain.
- New-WindowsUserProfile: -IsAdmin is a switch.
- Join-MegaHash and Compare-MegaHash take -Path.

Changes
- Every public function has full comment-based help, OutputType, and a platform check.
- Linux functions work on any distribution and use no distribution-specific tools.
- Get-ApplicationSignatureAudit no longer installs ThreadJob from the PowerShell Gallery.
- State-changing functions support -WhatIf and -Confirm.
'@

        }
    }
}