gpt4 book ai didi

powershell - 为 powershell 中的 switch 添加自动完成功能

转载 作者:行者123 更新时间:2023-12-02 23:41:26 27 4
gpt4 key购买 nike

我正在尝试在 powershell 中添加自动完成功能。在这种情况下,我希望能够在我的控制台中输入“test”。之后能够键入 Get-Se[TAB] 以使用 TAB 扩展自动完成 Get-Search。

PS > Get-Se[TAB]
PS > Get-Search

function test
{
[CmdletBinding()]
param()

# label the while loop "outer"
:outer while($true){
$x = Read-Host

# split $x into two parts
$first,$second = $x -split '\s',2

# switch evaluating the first part
switch($first){
Get-Search {
# Searching
}
default {
Write-Host "False"
}
}
}
}

附加信息:

目标:
我希望能够使用看起来像 cmdlet 的参数来获得 Powershell 的感觉。

关于原始脚本:

我为许多不同的用户创建了一个脚本来自动执行来自多个 API 的查询。我现在搜索的是“s”,我希望它是“Get-Search”,所以 Read-Host 等待输入,用户将输入“Get-Search 'value'”并返回格式化的 JSON .
PS > Get-Search foobar
#Returns JSON

最佳答案

一开始我很难理解你的意图,但我想我现在明白了。

您想在 Read-Host 中实现制表符补全(制表符扩展)迅速的。

不幸的是,没有办法做到这一点。

如果你分享你想要这个的原因,可能会有更好的方法来实现你的最终目标。

根据您的其他信息,我有不同的方法。

  • 为每个查询创建实际函数,例如 Get-Search等。您甚至可以为它们添加别名,以便 s要的话直接对应。
  • 将所有这些函数包装在一个适当的模块中,以便您可以导入它们(参见下一步)。
  • Create a constrained runspace只允许用户执行您想要的特定功能和别名(使用模块更容易,但模块不是必需的)。

  • 这样做可以让您的最终用户(甚至远程)访问 PowerShell session ,该 session 只能使用您创建并允许执行的功能。其他 cmdlet/功能甚至语言功能(例如使用变量)都将受到限制且不可用。

    这样,您将获得真正的 PowerShell 选项卡扩展和语义,并最终获得一组真正的函数,这些函数也可以以自动化方式使用。

    您不必编写任何提示或解析。

    此外,可以保护 session ,只允许特定用户和组连接到它。

    关于powershell - 为 powershell 中的 switch 添加自动完成功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41348808/

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