PSScriptAnalyzer.psm1

#
# Script module for module 'PSScriptAnalyzer'
#

# Clear PSDefaultParameterValues in the module scope and enable strict mode
$PSDefaultParameterValues.Clear()
Set-StrictMode -Version Latest

# Set up some helper variables to make it easier to work with the module
$PSModule = $ExecutionContext.SessionState.Module
$PSModuleRoot = $PSModule.ModuleBase

# Import the appropriate nested binary module based on the current PowerShell version
$binaryModuleRoot = $PSModuleRoot
if ($PSVersionTable.PSVersion -lt [Version]'5.0') {
    $binaryModuleRoot = Join-Path -Path $PSModuleRoot -ChildPath 'PSv3'
}

$binaryModulePath = Join-Path -Path $binaryModuleRoot -ChildPath 'Microsoft.Windows.PowerShell.ScriptAnalyzer.dll'
$binaryModule = Import-Module -Name $binaryModulePath -PassThru

# When the module is unloaded, remove the nested binary module that was loaded with it
$PSModule.OnRemove = {
    Remove-Module -ModuleInfo $binaryModule
}