Commands/Interpreters/Get-Interpreter.ps1

function Get-Interpreter {

    <#
    .SYNOPSIS
        Gets Interpreters
    .DESCRIPTION
        Gets PipeScript Interpreters
    .EXAMPLE
        Get-Interpreter
    .EXAMPLE
        Get-Interpreter -LanguageName "JavaScript"
    .NOTES
        This command accepts open-ended input.
    #>

    [Alias('Get-Interpreters','PSInterpreter','PSInterpreters')]
    [CmdletBinding(PositionalBinding=$false)]
    param(
    # The name of one or more languages.
    [Parameter(ValueFromPipelineByPropertyName)]
    [string[]]
    $LanguageName,

    # Any remaining arguments.
    [Parameter(ValueFromRemainingArguments)]
    [Alias('Args','Arguments','ArgList')]
    [PSObject[]]
    $ArgumentList,

    # Any input object.
    [Parameter(ValueFromPipeline)]
    [PSObject]
    $InputObject
    )

    process {
        foreach ($arg in $ArgumentList) {
            if ($arg -is [string] -and $LanguageName -notcontains $arg) {
                $LanguageName += $arg
            }
        }
        
        
        if ($LanguageName) {
            foreach ($langName in $LanguageName) {
                if ($PSInterpreters.$langName) {
                    $PSInterpreters.$langName
                }
            }
        } else {
            $PSInterpreters
        }        
    }

}