Functions/Get-ModuleHelp.ps1
function Get-ModuleHelp { <# .Synopsis Get information on a specific module or a list of imported and installed modules .DESCRIPTION The module information includes all available resources such as Workflows, Aliases and more. .PARAMETER Name Use module name filter option to limit help information to specific module(s) .PARAMETER CommandName Retreive comnmand information from all modules or from specifc module(s) .PARAMETER Available Expand scope to include available modules (not only installed) .NOTES Author: Jack Olsson .EXAMPLE Get-ModuleHelp -Name PSJumpstart List all exported resources for the 'PSJumpStart' module .EXAMPLE Get-ModuleHelp -CommandName clip List all loaded modules with resources containing the name 'clip'. #> [CmdletBinding()] param( [string]$Name, [string]$CommandName, [switch]$Available ) #region local function function showModuleHelp($module) { "`n" + $module.Name "".PadRight(($module.Name).Length,'=') If ($module.ExportedWorkflows.Count -gt 0) { $result=$null $result=($module.ExportedWorkflows).Values | Where-Object {$_ -like "*$CommandName*"} if (![string]::IsNullOrEmpty($result)) { "`nWorkflows" "----------" $result } } If ($module.ExportedDscResources.Count -gt 0) { $result=$null $result=$module.ExportedDscResources | Where-Object {$_ -like "*$CommandName*"} if (![string]::IsNullOrEmpty($result)) { "`nDsc Resources" "--------------" $result } } If ($module.ExportedVariables.Count -gt 0) { $result=$null $result=$module.ExportedVariables | Where-Object {$_ -like "*$CommandName*"} if (![string]::IsNullOrEmpty($result)) { "`nVariables" "----------" $result } } If ($module.ExportedTypeFiles.Count -gt 0) { $result=$null $result=$module.ExportedTypeFiles | Where-Object {$_ -like "*$CommandName*"} if (![string]::IsNullOrEmpty($result)) { "`nType Files" "-----------" $result } } If ($module.ExportedFormatFiles.Count -gt 0) { $result=$null $result=$module.ExportedFormatFiles | Where-Object {$_ -like "*$CommandName*"} if (![string]::IsNullOrEmpty($result)) { "`nFormat files" "-------------" $result } } If ($module.ExportedCommands.Count -gt 0) { $result=$null $result=($module.ExportedCommands).Values | Where-Object {$_.Name -like "*$CommandName*"} | Select-Object Name,CommandType,Version if (![string]::IsNullOrEmpty($result)) { "`nCommands" "--------" $result } } If ($module.ExportedAliases.Count -gt 0) { $result=$null $aliases = $module.ExportedAliases $aliases.Keys | Where-Object {$aliases[$_].Definition -like "*$CommandName*"} | ForEach-Object { $result+=$aliases[$_].Name + " -> " + $aliases[$_].Definition + "`n" } if (![string]::IsNullOrEmpty($result)) { "`nAliases" "-------" $result } } } #endregion If ([string]::IsNullOrEmpty($Name) -and [string]::IsNullOrEmpty($CommandName)) { if ($Available) { "`nAvailable modules" "-----------------" #List installed Modules Get-Module -ListAvailable | Select-Object Name, Version, Description } else { "`nInstalled modules" "-----------------" #List installed Modules Get-InstalledModule | Select-Object Name, Version, Description } #Get current active modules "`nImported modules" "----------------" Get-Module | Select-Object Name, Version, ModuleType } else { if ($Available) { Get-Module -ListAvailable | Where-Object {$_.Name -like "*$name*"} | ForEach-Object { showModuleHelp -module $_ } } else { Get-Module | Where-Object {$_.Name -like "*$name*"} | ForEach-Object { showModuleHelp -module $_ } } } } |