diff --git a/GPOZaurr.psm1 b/GPOZaurr.psm1 index 0d9e87f..92700bd 100644 --- a/GPOZaurr.psm1 +++ b/GPOZaurr.psm1 @@ -2,13 +2,53 @@ $Public = @( Get-ChildItem -Path $PSScriptRoot\Public\*.ps1 -ErrorAction SilentlyContinue -Recurse ) $Private = @( Get-ChildItem -Path $PSScriptRoot\Private\*.ps1 -ErrorAction SilentlyContinue -Recurse ) -#Dot source the files -Foreach ($import in @($Public + $Private)) { - Try { - . $import.fullname - } Catch { - Write-Error -Message "Failed to import function $($import.fullname): $_" +$AssemblyFolders = Get-ChildItem -Path $PSScriptRoot\Lib -Directory -ErrorAction SilentlyContinue +if ($AssemblyFolders.BaseName -contains 'Standard') { + $Assembly = @( Get-ChildItem -Path $PSScriptRoot\Lib\Standard\*.dll -ErrorAction SilentlyContinue ) +} else { + if ($PSEdition -eq 'Core') { + $Assembly = @( Get-ChildItem -Path $PSScriptRoot\Lib\Core\*.dll -ErrorAction SilentlyContinue ) + } else { + $Assembly = @( Get-ChildItem -Path $PSScriptRoot\Lib\Default\*.dll -ErrorAction SilentlyContinue ) } } +$FoundErrors = @( + Foreach ($Import in @($Assembly)) { + try { + Add-Type -Path $Import.Fullname -ErrorAction Stop + } catch [System.Reflection.ReflectionTypeLoadException] { + Write-Warning "Processing $($Import.Name) Exception: $($_.Exception.Message)" + $LoaderExceptions = $($_.Exception.LoaderExceptions) | Sort-Object -Unique + foreach ($E in $LoaderExceptions) { + Write-Warning "Processing $($Import.Name) LoaderExceptions: $($E.Message)" + } + $true + #Write-Error -Message "StackTrace: $($_.Exception.StackTrace)" + } catch { + Write-Warning "Processing $($Import.Name) Exception: $($_.Exception.Message)" + $LoaderExceptions = $($_.Exception.LoaderExceptions) | Sort-Object -Unique + foreach ($E in $LoaderExceptions) { + Write-Warning "Processing $($Import.Name) LoaderExceptions: $($E.Message)" + } + $true + #Write-Error -Message "StackTrace: $($_.Exception.StackTrace)" + } + } + #Dot source the files + Foreach ($Import in @($Private + $Public)) { + Try { + . $Import.Fullname + } Catch { + Write-Error -Message "Failed to import functions from $($import.Fullname): $_" + $true + } + } +) + +if ($FoundErrors.Count -gt 0) { + $ModuleName = (Get-ChildItem $PSScriptRoot\*.psd1).BaseName + Write-Warning "Importing module $ModuleName failed. Fix errors before continuing." + break +} Export-ModuleMember -Function '*' -Alias '*' \ No newline at end of file