.net 如何让Powershell TabExpansion打印所有可能的补全?
Powershell中的默认TabExpansion在命令提示符下循环完成片段的可能完成。在PowerShell主机内部,有一个循环缓冲区,第一个选项卡填充缓冲区,并将第一个可能的完成置于提示符上。随后的选项卡循环浏览可能完成的列表 如何修改TabExpansion,以便在点击时仅显示可能的完成集 另外,我可以从命令提示符显式调用TabExpansion函数吗?如果可以,如何调用 (如果您不知道我所说的“修改选项卡扩展”是什么意思,请参阅。)请参阅此处。 退房。很酷 更新.net 如何让Powershell TabExpansion打印所有可能的补全?,.net,windows,powershell,scripting,.net,Windows,Powershell,Scripting,Powershell中的默认TabExpansion在命令提示符下循环完成片段的可能完成。在PowerShell主机内部,有一个循环缓冲区,第一个选项卡填充缓冲区,并将第一个可能的完成置于提示符上。随后的选项卡循环浏览可能完成的列表 如何修改TabExpansion,以便在点击时仅显示可能的完成集 另外,我可以从命令提示符显式调用TabExpansion函数吗?如果可以,如何调用 (如果您不知道我所说的“修改选项卡扩展”是什么意思,请参阅。)请参阅此处。 退房。很酷 更新 从CodePlex下载
从CodePlex下载。您可以在提示下直接修改它,或者在您的配置文件脚本中修改它,这只是一个函数,因此您可以在提示下键入它以修改它以打印所有答案:
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:on Format-Wide这一行代码似乎解决了Format-Wide和字符串数组的问题: $ComputerList |选择对象-属性@{Expression={[Object[]]$};Name=“Name”}格式宽-属性名称-第5列 本例中的字符串数组是$ComputerList,定义如下:
[array]$ComputerList=@(“WINSRV2003-32B”、“WINSRV2003-64B”)我无法想象没有PowerTab的Powershell。真的吗?有那么简单吗?我刚才试过这个,但它对我不起作用。我得到了空白行,但没有显示潜在的完成。我只测试了第二个解决方案在PultS壳2 CTP3中,但是它应该工作。