gpt4 book ai didi

powershell - 显示如何在 Windows PowerShell 3.0 中覆盖 TabExpansion2 的示例

转载 作者:行者123 更新时间:2023-12-03 08:17:21 28 4
gpt4 key购买 nike

有没有人有一个示例显示如何在 Windows PowerShell 3.0 中覆盖 TabExpansion2 函数?我知道如何覆盖旧的 TabExpansion 函数,但我想为 PowerShell ISE 中的智能感知提供项目列表。我查看了 TabExpansion2 的定义,很难理解如何在选项卡扩展过程中注入(inject)自己的代码。

最佳答案

我认为这个例子应该给你一个很好的起点:Windows Powershell Cookbook: Sample implementation of TabExpansion2 .示例代码显示您可以在默认调用 [CommandCompletion]::CompleteInput 之前和之后添加代码。 .

例如,您可以在 $options 中添加一个条目。名为 CustomArgumentCompleters 的哈希表,用于获取命令参数的自定义完成。该条目应该是一个哈希表,其中键是参数名称(例如“ComputerName”或“Get-ChildItem:Filter”),值是可用于完成该参数的值数组。 Powertheshell.com 也有一篇关于此的文章:Dynamic Argument Completion .您还可以使用 NativeArgumentCompleters 选项为 native 可执行文件指定自定义完成(同样,键是命令名称,值是可能完成的数组)。

一次CompleteInput已返回,您可以将结果存储在$result以供进一步分析。结果是 CommandCompletion 的一个实例类(class)。如果默认补全没有找到任何匹配项,您可以添加自己的 CompletionResult 匹配列表的条目:

$result.CompletionMatches.Add(
(New-Object Management.Automation.CompletionResult "my completion string") )

不要忘记返回 $result从函数,所以完成实际上发生了。

最后,关于故障排除的说明:调用 TabCompletion2 的代码似乎压制了所有基于控制台的输出(不足为奇),所以如果您想自己编写调试消息,您可以尝试将它们写入单独的文本文件。例如,您可以更改 End TabCopmletion2中的函数看起来像这样:
$result = [System.Management.Automation.CommandCompletion]::CompleteInput(
$inputScript, $cursorColumn, $options)
$result | Get-Member | Add-Content "c:\TabCompletionLog.txt"
$result

关于powershell - 显示如何在 Windows PowerShell 3.0 中覆盖 TabExpansion2 的示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12291199/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com