completions/nslookup.ps1

<#
 # nslookup completion
 #>

Import-Module NativeCommandCompleter.psm -ErrorAction SilentlyContinue

$msg = data { ConvertFrom-StringData @'
    nslookup = query Internet name servers interactively
    domain = Set default domain name
    debug = Set debugging mode
    nodebug = Unset debugging mode
    defname = Append domain name to each query
    nodefname = Do not append domain name
    port = Change default TCP/UDP name server port
    querytype = Change type of information query
    type = Change type of information query
    recurse = Ask server to query other servers if it doesn't have information
    norecurse = Do not ask server to query other servers
    retry = Set number of retries
    timeout = Set initial time-out interval
    vc = Always use a virtual circuit
    novc = Do not always use a virtual circuit
    search = Append domain names in domain search list
    nosearch = Do not append domain names
    class = Change query class
    class_IN = Internet class
    class_CHAOS = Chaos class
    class_HESIOD = MIT Athena Hesiod class
    class_ANY = Wildcard
    srchlist = Set domain search list
    ndots = Set number of dots
    help = Print brief summary of commands
    exit = Exit the program
    server = Change default server to specified DNS server
    lserver = Change default server to specified DNS server using initial server
    root = Change default server to the root server
    finger = Connect with finger server
    ls = List information about a DNS domain
    ls_a = List canonical names and aliases
    ls_d = List all records
    ls_t = List records of given type
    view = Sort and list output of ls command
    set = Change state information affecting lookups
    all = Print current values of frequently used options
'@
 }
Import-LocalizedData -BindingVariable localizedMessages -ErrorAction SilentlyContinue;
foreach ($key in $localizedMessages.Keys) { $msg[$key] = $localizedMessages[$key] }

if ($IsWindows)
{
    Register-NativeCompleter -Name nslookup -Description $msg.nslookup -Parameters @(
        New-ParamCompleter -OldStyleName debug -Description $msg.debug
        New-ParamCompleter -OldStyleName nodebug -Description $msg.nodebug
        New-ParamCompleter -OldStyleName defname -Description $msg.defname
        New-ParamCompleter -OldStyleName nodefname -Description $msg.nodefname
        New-ParamCompleter -OldStyleName d2 -Description $msg.debug
        New-ParamCompleter -OldStyleName nod2 -Description $msg.nodebug
        New-ParamCompleter -OldStyleName domain -Description $msg.domain -Type Required -VariableName 'NAME'
        New-ParamCompleter -OldStyleName port -Description $msg.port -Type Required -VariableName 'PORT'
        New-ParamCompleter -OldStyleName querytype,type -Description $msg.querytype -Type Required -Arguments "A","AAAA","CNAME","MX","NS","PTR","SOA","SRV","TXT","ANY"
        New-ParamCompleter -OldStyleName recurse -Description $msg.recurse
        New-ParamCompleter -OldStyleName norecurse -Description $msg.norecurse
        New-ParamCompleter -OldStyleName retry -Description $msg.retry -Type Required -VariableName 'NUMBER'
        New-ParamCompleter -OldStyleName timeout -Description $msg.timeout -Type Required -VariableName 'NUMBER'
        New-ParamCompleter -OldStyleName vc -Description $msg.vc
        New-ParamCompleter -OldStyleName novc -Description $msg.novc
        New-ParamCompleter -OldStyleName class -Description $msg.class -Type Required -Arguments @(
            "IN`t{0}" -f $msg.class_IN
            "CHAOS`t{0}" -f $msg.class_CHAOS
            "HESIOD`t{0}" -f $msg.class_HESIOD
            "ANY`t{0}" -f $msg.class_ANY
        )
        New-ParamCompleter -OldStyleName srchlist -Description $msg.srchlist -Type Required -VariableName 'DOMAIN[/...]'
        New-ParamCompleter -OldStyleName '?' -Description $msg.help
    ) -NoFileCompletions
}
else
{
    Register-NativeCompleter -Name nslookup -Description $msg.nslookup -Parameters @(
        New-ParamCompleter -OldStyleName debug -Description $msg.debug
        New-ParamCompleter -OldStyleName nodebug -Description $msg.nodebug
        New-ParamCompleter -OldStyleName defname -Description $msg.defname
        New-ParamCompleter -OldStyleName nodefname -Description $msg.nodefname
        New-ParamCompleter -OldStyleName d2 -Description $msg.debug
        New-ParamCompleter -OldStyleName nod2 -Description $msg.nodebug
        New-ParamCompleter -OldStyleName domain -Description $msg.domain -Type Required -VariableName 'NAME'
        New-ParamCompleter -OldStyleName port -Description $msg.port -Type Required -VariableName 'PORT'
        New-ParamCompleter -OldStyleName querytype,type -Description $msg.querytype -Type Required -Arguments "A","AAAA","AFSDB","APL","CAA","CDNSKEY","CDS","CERT","CNAME","CSYNC","DHCID","DLV","DNAME","DNSKEY","DS","EUI48","EUI64","HINFO","HIP","HTTPS","IPSECKEY","KEY","KX","LOC","MX","NAPTR","NS","NSEC","NSEC3","NSEC3PARAM","OPENPGPKEY","PTR","RRSIG","RP","SIG","SMIMEA","SOA","SRV","SSHFP","SVCB","TA","TKEY","TLSA","TSIG","TXT","URI","ZONEMD","ANY"
        New-ParamCompleter -OldStyleName recurse -Description $msg.recurse
        New-ParamCompleter -OldStyleName norecurse -Description $msg.norecurse
        New-ParamCompleter -OldStyleName retry -Description $msg.retry -Type Required -VariableName 'NUMBER'
        New-ParamCompleter -OldStyleName timeout -Description $msg.timeout -Type Required -VariableName 'NUMBER'
        New-ParamCompleter -OldStyleName vc -Description $msg.vc
        New-ParamCompleter -OldStyleName novc -Description $msg.novc
        New-ParamCompleter -OldStyleName search -Description $msg.search
        New-ParamCompleter -OldStyleName nosearch -Description $msg.nosearch
        New-ParamCompleter -OldStyleName class -Description $msg.class -Type Required -Arguments @(
            "IN`t{0}" -f $msg.class_IN
            "CH`t{0}" -f $msg.class_CHAOS
            "HS`t{0}" -f $msg.class_HESIOD
            "ANY`t{0}" -f $msg.class_ANY
        )
        New-ParamCompleter -OldStyleName srchlist -Description $msg.srchlist -Type Required -VariableName 'DOMAIN[/...]'
        New-ParamCompleter -OldStyleName ndots -Description $msg.ndots -Type Required -VariableName 'NUMBER'
        New-ParamCompleter -OldStyleName '?' -Description $msg.help
    ) -NoFileCompletions
}