我有一个模块PhriInfrastructure
可以对我的组织中的 DevOps 程序进行编码。出于向后兼容性的原因Test-IsLocalhost
,我为它起了一个别名。Get-IsLocalhost
我尝试将 a 应用于description
别名,如下所示:
New-Alias -Name Get-IsLocalhost -Value Test-IsLocalhost -Description "Get-IsLocalhost was renamed Test-IsLocalhost to better-match Powershell verb standards"
但是,当我尝试在命令行中提取有关别名的元数据时
Import-Module .\PowerShellModules\src\PhriInfrastructure -Force
(Get-Alias Get-IsLocalhost) | Format-List -Property *
Get-Help Get-IsLocalhost
该Description
字段在Get-Help
和中都是空的Get-Alias
(底层Test-IsLocalhost
命令只有一个#.Synopsis
.
同时,如果我尝试直接从命令行创建别名,它会出现在别名成员中(但仍然不会出现在 get-help 中)。
有没有办法正确公开别名描述?或者有更好的方式来表达“不要使用此别名,使用主要别名?” 这只是 Powershell 5.1 在模块中导出别名的一个错误吗?
事实上,当从模块导出别名时,您指定的任何
-Description
值似乎都会丢失(在 Windows PowerShell 和 PowerShell (Core) 中观察到,最低版本为 v7.3.6,截至撰写本文时为当前版本)。我会说是的,并且我鼓励您在 GitHub 存储库中创建错误报告。
根据设计,别名没有自己的帮助 -
Get-Help
只是将别名解析为其目标命令并显示其帮助,因此您永远不会以这种方式获得有关别名本身的信息。一般来说,
.Description
别名定义的属性很少使用(它没有为任何内置别名设置),除非您明确询问,否则它甚至不会出现在Get-Alias
for-display 输出中,这也表明了这一点对于它(例如,通过Format-List *
)您可以实现
Get-IsLocalhost
为委托给 的函数Test-IsLocalHost
,它允许您提供自己的基于注释的帮助,这可能很简单:如果您喜欢运行时警告,可以
System.ObsoleteAttribute
按如下方式使用该属性;请注意,基于注释的帮助用于自动转发到Test-IsLocalHost
此处的帮助:调用时,通过警告输出流无条件发出警告,可以使用以下命令将其静音
3>$null
(如果您还想支持-WarningAction SilentlyContinue
,则必须使该函数成为高级函数,这将需要复制目标函数的参数声明,并且调用它Test-IsLocalHost @PSBoundParameters
。)