Как я могу заставить Powershell TabExpansion распечатать все возможные дополнения? - PullRequest
2 голосов
/ 20 мая 2009

По умолчанию TabExpansion в Powershell циклически перебирает возможные дополнения для фрагмента в командной строке. Внутри хоста PowerShell имеется кольцевой буфер, и первая вкладка заполняет буфер и помещает первое потенциальное завершение в приглашение. Последующие вкладки циклически перебирают список возможных завершений.

Как я могу изменить TabExpansion, чтобы просто отображать набор возможных завершений при нажатии?

Кроме того, можно ли явно вызвать функцию TabExpansion из командной строки, и если да, то как?

(Если вы не знаете, что я имею в виду под «изменить TabExpansion», см. эту ссылку .)

Ответы [ 4 ]

5 голосов
/ 20 мая 2009

Выезд PowerTab . Это довольно круто.

UPDATE

Скачать PowerTab в CodePlex.

1 голос
/ 20 мая 2009

Вы можете изменить его непосредственно в приглашении - или в скрипте своего профиля - это просто функция, так что вы можете набрать это в приглашении, чтобы изменить его для печати всех ответов:

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: Проголосовать за ошибку в формате Format

1 голос
/ 20 мая 2009
0 голосов
/ 10 июля 2009

Эта однострочная строка, кажется, решает проблему с широким форматом и массивом строк:

$ ComputerList | Select-Object -Property @ {Expression = {[Object []] $ _}; Имя = "Имя"} | Широкий формат -Недвижимое имя -Колонна 5

Массив строк в этом случае - $ ComputerList, определенный следующим образом:

[массив] $ ComputerList = @ ("WINSRV2003-32B", "WINSRV2003-64B")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...