繁体   English   中英

如何使用模块清单导出 PowerShell 模块别名?

[英]How to export PowerShell module aliases with a module manifest?

我有一个具有多种功能的模块。

由于我以非 PowerShell 的方式命名它们,因此我想重命名它们。 但是由于模块已经在使用中,我想保留旧的函数名称。

实现这一目标的最佳方法似乎是使用别名。 我已经有一个模块清单,其中指出:

AliasesToExport = '*'

所以我用New-Alias -Name test -Value oldFunctionName在模块中创建了一个别名。

函数照常导入,但别名不存在。

我知道我可以在模块中使用 Export-ModuleMember。 但是我有一个清单,它已经应该解决这个问题。

所以最后是我的问题:

为什么不通过清单导出别名?

函数本身是否有一个特殊的地方,我可以或必须在其中定义别名? 或者我是否必须在特殊的地方使用 New-Alias cmdlet?

我在想像参数别名这样的东西:

[parameter(Mandatory=$true, Position=0)][Alias("name","path")][String]$filename

但是对于函数。

似乎没有我正在寻找的解决方案。

所以我不得不使用 Export-ModuleMember

Export-ModuleMember -Function * -Alias *

起初我只使用参数“别名”,因为函数应该由清单导出(FunctionsToExport =“*”),但实际上只导出了别名。

因此,请确保使用 Export-ModuleMember cmdlet 导出要导出的所有内容。

将 -Scope Global 添加到 New-Alias 命令似乎可以解决问题。

New-Alias -Name test -Value oldFunctionName -Scope Global

当我尝试这个时,我注意到了一些让我感到惊讶的事情。 我在一个模块中有一个函数,其目的是创建别名。 我很惊讶地看到当我使用这个函数时(在导入模块之后)它创建的别名与模块相关联。 如果我删除模块,我用这个函数创建的所有别名也会消失。

如果你看:

get-help New-ModuleManifest -full

对于-AliasesToExport您可以看到以下内容:

-AliasesToExport <string[]>
Specifies the aliases that the module exports. Wildcards are permitted.

You can use this parameter to restrict the aliases that are exported by the module. It can remove aliases from the list of exported aliases, but it cannot add aliases to the list.

If you omit this parameter, New-ModuleManifest creates an AliasesToExport key with a value of * (all), meaning that all aliases that are exported by the module are exported by the manifest.

我可能错了,但在我的理解中-AliasesToExport可能用于限制导出的别名,但是这句话“New-ModuleManifest 创建了一个值为 * (all) 的 AliasesToExport 键,这意味着模块导出的所有别名由清单导出”对我来说意味着您必须在模块中导出别名。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM