Tenho um módulo PhriInfrastructure
que codifica nossos procedimentos de DevOps em minha organização. Ele tem uma função Test-IsLocalhost
para a qual criei um alias Get-IsLocalhost
por motivos de compatibilidade com versões anteriores.
Eu tentei aplicar um description
ao alias, assim:
New-Alias -Name Get-IsLocalhost -Value Test-IsLocalhost -Description "Get-IsLocalhost was renamed Test-IsLocalhost to better-match Powershell verb standards"
no entanto, quando tento extrair metadados sobre o alias na linha de comando
Import-Module .\PowerShellModules\src\PhriInfrastructure -Force
(Get-Alias Get-IsLocalhost) | Format-List -Property *
Get-Help Get-IsLocalhost
o Description
campo está vazio no Get-Help
e no Get-Alias
(o comando subjacente Test-IsLocalhost
tem apenas uma extensão #.Synopsis
.
Enquanto isso, se eu tentar criar o alias diretamente da linha de comando, ele aparecerá nos membros do alias (mas ainda não no get-help).
Existe uma maneira de expor a descrição do alias corretamente? Ou alguma maneira melhor de dizer "não use este alias, use o principal?" Isso é apenas um bug em como o Powershell 5.1 exporta aliases em módulos?
De fato, qualquer
-Description
valor que você especificar parece ser perdido quando um alias é exportado de um módulo (observado no Windows PowerShell e no PowerShell (Core) até pelo menos v7.3.6, atual até o momento em que este livro foi escrito).Eu diria que sim e encorajo você a criar um relatório de bug no repositório do GitHub .
Por design, os aliases não têm sua própria ajuda -
Get-Help
simplesmente resolve um alias para seu comando de destino e mostra sua ajuda, para que você nunca obtenha informações sobre o próprio alias dessa maneira.Geralmente, a
.Description
propriedade das definições de alias raramente é usada (ela não é definida para nenhum dos aliases integrados ), o que também é sugerido pelo fato de que ela nem aparece naGet-Alias
saída for-display do 's, a menos que você pergunte explicitamente para isso (por exemplo, viaFormat-List *
)Você pode implementar
Get-IsLocalhost
como uma função que delega paraTest-IsLocalHost
, o que permite fornecer sua própria ajuda baseada em comentários, que pode ser tão simples quanto:Se você preferir um aviso de tempo de execução , poderá usar o
System.ObsoleteAttribute
atributo da seguinte maneira; observe que a ajuda baseada em comentários é usada para encaminhar automaticamente paraTest-IsLocalHost
a ajuda de aqui:Na chamada, um aviso é emitido incondicionalmente por meio do fluxo de saída Warning , que pode ser silenciado com
3>$null
(se você também quiser oferecer suporte a-WarningAction SilentlyContinue
, terá que tornar a função avançada , o que exigiria a duplicação das declarações de parâmetro da função de destino e invocando-o comTest-IsLocalHost @PSBoundParameters
.)