【问题标题】:How can I get Powershell TabExpansion to print all the possible completions?如何让 Powershell TabExpansion 打印所有可能的完成?
【发布时间】:2009-05-19 23:16:24
【问题描述】:

Powershell 中的默认 TabExpansion 在命令提示符下循环显示片段的可能完成。在 PowerShell 主机内部,有一个循环缓冲区,第一个 TAB 填充缓冲区并将第一个可能的完成放在提示符上。随后的 TAB 循环遍历可能完成的列表。

如何修改 TabExpansion 以在我点击时仅显示可能的完成集?

另外,我可以从命令提示符显式调用 TabExpansion 函数吗?如果可以,怎么做?

(如果你不知道我所说的“修改 TabExpansion”是什么意思,请参阅 this link。)

【问题讨论】:

    标签: .net windows powershell scripting


    【解决方案1】:

    查看PowerTab。挺好看的。

    更新

    在 CodePlex 下载 PowerTab

    【讨论】:

    • 我无法再想象没有 PowerTab 的 Powershell。
    【解决方案2】:
    【解决方案3】:

    可以直接在提示符处修改它 - 或在您的配置文件脚本中 - 它只是一个函数,因此您可以在提示符处键入它来更改它以打印所有答案:

    Copy Function:\TabExpansion Function:\OriginalTabExpansion
    function TabExpansion([string] $line, [string] $lastword) { 
       OriginalTabExpansion $line $lastword | Out-Host
       $line
    }
    

    或者你可以走得更远,将其格式化:

    Copy Function:\TabExpansion Function:\OriginalTabExpansion
    function TabExpansion([string] $line, [string] $lastword) { 
       Write-Host # an emtpy newline to avoid outputting on the prompt line
       # A hack, because Format-Wide doesn't work on strings 
       $obj = new-object psobject | add-member noteproperty value "" -Passthru
       OriginalTabExpansion $line $lastword | ForEach { $obj.value = $_; $obj } | 
          Format-Wide -auto value | Out-Host
       ## Maybe even re-output your prompt function... depending on how it's written
       Write-Host $(prompt) -NoNewLine
       return $line # keep the command as it was
    }
    

    PS:Vote for the bug 在格式范围内

    【讨论】:

    • 认真的吗?有那么容易吗?我刚才试过了,它对我不起作用。我得到了空白行,但没有显示任何可能的完成。
    • 我只在 PowerShell 2 CTP3 中测试了第二个解决方案,但它应该工作
    【解决方案4】:

    这个单行似乎可以解决格式范围和字符串数组的问题:

    $计算机列表 |选择对象-Property @{Expression={[Object[]] $_};Name="Name"} |格式范围 - 属性名称 - 第 5 列

    本例中的字符串数组是 $ComputerList,定义如下:

    [数组] $ComputerList = @("WINSRV2003-32B","WINSRV2003-64B")

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-02
      • 2016-03-02
      • 1970-01-01
      • 2014-02-05
      • 2022-09-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多