2016-06-10 1 views
0

Я использую TabExpansion2 в PowerShell 3, и когда я набираю аргумент, он вызывает строку, которую я хочу, но обернутый в синтаксис, который я не хочу.Завершение форматирования вкладки powershell

Например, когда я ударил вкладку после -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"}   
     } 

Спасибо!

+0

Помогает ли вообще ответить на этот вопрос [этот вопрос] (http://stackoverflow.com/questions/30633098/powershell-param-validateset-values-with-spaces-and-tab-completion)? – user4317867

ответ

0

Я не знаком с 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.

+0

Спасибо. Это сработало хорошо. –