首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用包含破折号的模块名对命令进行限定?

如何用包含破折号的模块名对命令进行限定?
EN

Stack Overflow用户
提问于 2019-05-10 23:43:27
回答 1查看 88关注 0票数 2

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

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

作为参考,我的$PSVersionTable如下:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-11 13:54:59

这个问题与模块名称中存在的- (U+002D)无关,调用posh-git\Write-GitStatus的工作就证明了这一点。

相反,问题是模块是以一种非标准的方式定义的:

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

代码语言:javascript
复制
function Global:Write-VcsStatus { # ...

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

因此,您只能在没有模块限定符posh-git\的情况下调用它,既可以作为Write-VcsStatus调用,也可以作为global:Write-VcsStatus调用。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56086056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档