【问题标题】:Formatting tab argument completion powershell格式化选项卡参数完成powershell
【发布时间】:2016-06-11 11:58:59
【问题描述】:

我在 PowerShell 3 中使用 TabExpansion2,当我使用 Tab 键完成一个参数时,它会显示我想要但包含在我不想要的语法中的字符串。

例如,当我在-binName 之后点击标签时:

Use-Bin -binName @{Name=5.0}

我需要的是:

Use-Bin -binName 5.0

我正在使用这个脚本:https://www.powershellgallery.com/packages/PowerShellCookbook/1.3.6/Content/TabExpansion.ps1

使用这些调整后的选项:

$options["CustomArgumentCompleters"] = @{
            "binName" = {Get-ChildItem -Path $global:TH_BinDir | Select-Object Name}
            "dbName" = {Get-ChildItem -Path $global:TH_DBDir\RT5.7\ | Select-Object Name}
            "patchSubDir" ={Get-ChildItem -Path $global:TH_BinDir\Patches\ | Select-Object Name}
            "hmiSubDir" = {Get-ChildItem -Path $global:TH_HMIDir | Select-Object Name}
            "moduleScript" = {Get-ChildItem -Path $global:TH_ModPaths | Select-Object Name}
            "items" = {"bins", "databases", "modules"}           
        }

谢谢!

【问题讨论】:

标签: powershell powershell-3.0 tabexpansion


【解决方案1】:

我不熟悉 tabexpansion,但您的问题是您正在返回具有 name 属性的对象。您只想返回字符串。

$options["CustomArgumentCompleters"] = @{
    "binName" = {Get-ChildItem -Path $global:TH_BinDir | Select-Object -ExpandProperty Name}
    "dbName" = {Get-ChildItem -Path $global:TH_DBDir\RT5.7\ | Select-Object -ExpandProperty Name}
    "patchSubDir" ={Get-ChildItem -Path $global:TH_BinDir\Patches\ | Select-Object -ExpandProperty Name}
    "hmiSubDir" = {Get-ChildItem -Path $global:TH_HMIDir | Select-Object -ExpandProperty Name}
    "moduleScript" = {Get-ChildItem -Path $global:TH_ModPaths | Select-Object -ExpandProperty Name}
    "items" = {"bins", "databases", "modules"}   
}

由于您使用的是 3.0,这将更加简洁并完成同样的事情。

$options["CustomArgumentCompleters"] = @{
    "binName" = {(Get-ChildItem -Path $global:TH_BinDir).Name}
    "dbName" = {(Get-ChildItem -Path $global:TH_DBDir\RT5.7\).Name}
    "patchSubDir" ={(Get-ChildItem -Path $global:TH_BinDir\Patches\).Name}
    "hmiSubDir" = {(Get-ChildItem -Path $global:TH_HMIDir).Name}
    "moduleScript" = {(Get-ChildItem -Path $global:TH_ModPaths).Name}
    "items" = {"bins", "databases", "modules"}           
}

两种解决方案都通过扩展单个属性 name 的字符串来工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-12
    • 2023-04-10
    • 2011-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多