gpt4 book ai didi

powershell - 如何使用包含破折号的模块名称来限定命令?

转载 作者:行者123 更新时间:2023-12-02 23:35:45 25 4
gpt4 key购买 nike

在 PowerShell 中,如何使用包含破折号的模块名称来限定命令的名称(在调用中)?

具体来说,我正在尝试调用 posh-git\Write-VcsStatus ,但解释器不认为这是一个模块限定的命令。我已经导入了posh-git模块;我的 $PSModuleAutoLoadingPreference默认为 All反正;并且我已经验证了我安装的 posh-git 版本包含命令 Write-VcsStatus .这个问题与在我的相同环境中工作的其他示例形成对比,例如PowerLine\New-PromptText .

作为引用,我的$PSVersionTable如下:

Name                           Value
---- -----
PSVersion 6.2.0
PSEdition Core
GitCommitId 6.2.0
OS Microsoft Windows 10.0.17763
Platform Win32NT
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0

最佳答案

该问题与 - 的存在无关。 ( HYPHEN-MINUS, U+002D ) 在模块名称中,正如调用 posh-git\Write-GitStatus 的事实所证明的那样作品。

相反,问题在于 posh-git module以非标准方式定义:

从模块版本 0.7.3 开始,导出函数 Write-VcsStatus定义如下:

function Global:Write-VcsStatus { # ...

也就是说,该函数被放置在全局范围内,这意味着它在技术上不是运行时模块的一部分(尽管被列为导出函数,甚至 tab-completion 认为它是模块的常规部分)。

因此,您只能在没有模块限定符 posh-git\ 的情况下调用它。 , 作为 Write-VcsStatus或者,明确地,如 global:Write-VcsStatus .

我无法解释为什么以这种方式声明函数 - 底层 GitHub repo乍一看没有提供任何线索,但您可以考虑在那里创建一个问题。

关于powershell - 如何使用包含破折号的模块名称来限定命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56086056/

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