使用powershell tabexpansion函数

时间:2015-12-18 22:29:05

标签: powershell

当我运行语句man tabexpansion时,它表明我只需要提供-line和-lastword。

然而,当我运行这样的声明时:

tabexpansion -line "c:/win" -lastword "c:/win"

它什么都不返回。

它不应该至少显示C:\ Windows?我做错了什么?

1 个答案:

答案 0 :(得分:1)

tabexpansion是在手动命令输入期间执行选项卡处理所涉及的功能。它执行各种类型的对象的完成,例如路径名,变量名,函数/ cmdlet名等。此SO post讨论了此函数的接口。已预订的引用描述了覆盖 TabExpansion2

我在别处读到TabExpansion用于PS 2.0,而TabExpansion2用于3.0。

至于为什么TabExpansion没有返回任何内容,我只能回答我的系统(有PS 3.0)。在我的系统cat function:tabexpansion上给出:

[CmdletBinding()]
param(
    [String] $line,
    [String] $lastWord
)
process {
    if ($line -eq "Install-Module $lastword" -or $line -eq "inmo $lastword" 
        -or $line -eq "ismo $lastword" -or $line -eq "upmo $lastword" 
        -or $line -eq "Update-Module $lastword") {
        Get-PsGetModuleInfo -ModuleName "$lastword*" | % { $_.Id } | sort -Unique
    }
    elseif ( Test-Path -Path Function:\$tabExpansionBackup ) {
        & $tabExpansionBackup $line $lastWord
    }
}

除非$ line以一些特定的标记开头,否则它将转到elseif语句。如果未定义变量$tabexpansionBackup,则退出该函数而不输出。通过OP中的输入,它可以提供您所看到的输出 - 无。