Eu tenho usado este pequeno script simples nos últimos anos:
#! PowerShell
# Create utility aliases for working with fax account management cmdlets
# account searches
new-alias -name gfad -value '.\Get-FaxAcctByDNIS.ps1'
new-alias -name gfap -value '.\Get-FaxAcctByPhone.ps1'
new-alias -name gfasql -value '.\Get-FaxAcctBySQL.ps1'
new-alias -name gfasso -value '.\Get-FaxAcctBySSO.ps1'
new-alias -name Get-AcctByDNIS -value '.\Get-FaxAcctByDNIS.ps1'
new-alias -name Get-AcctByPhone -value '.\Get-FaxAcctByPhone.ps1'
new-alias -name Get-AcctBySQL -value '.\Get-FaxAcctBySQL.ps1'
new-alias -name Get-AcctBySSO -value '.\Get-FaxAcctBySSO.ps1'
# route searches
new-alias -name gfra -value '.\Get-FaxRouteByDestination.ps1'
new-alias -name gfrd -value '.\Get-FaxRouteByDNIS.ps1'
new-alias -name gfrsql -value '.\Get-FaxRouteBySQL.ps1'
new-alias -name Get-RouteBySQL -value '.\Get-FaxRouteBySQL.ps1'
new-alias -name Get-RouteByDestination -value '.\Get-FaxRouteByDestination.ps1'
new-alias -name Get-RouteByDNIS -value '.\Get-FaxRouteByDNIS.ps1'
new-alias -name Get-RouteBy -value '.\Get-FaxRouteBy.ps1'
new-alias -name Get-RouteBySQL -value '.\Get-FaxRouteBy.ps1'
# user searches
new-alias -name gfun -value '.\Get-UserByName.ps1'
new-alias -name gfusso -value '.\Get-UserBySSO.ps1'
new-alias -name gfusql -value '.\Get-UserBySQL.ps1'
new-alias -name Get-FaxUserByName -value '.\Get-UserByName.ps1'
new-alias -name Get-FaxUserBySSO -value '.\Get-UserBySSO.ps1'
new-alias -name Get-FaxUserBySQL -value '.\Get-UserBySQL.ps1'
# miscellaneous
#EoF#
É difícil imaginar muita coisa errada com isso (a menos que você o execute duas vezes e receba erros "já definidos"), certo? E sempre funcionou exatamente como deveria.
De repente, nesta manhã, invoco-o e tento usar um dos pseudônimos e entendo:
12:07:19|32|~\docs\rts\geafax# .\xyzzy.ps1 new-alias : The alias is not allowed, because an alias with the name 'Get-RouteBySQL' already exists. At C:\Users0018252\docs\rts\geafax\xyzzy.ps1:23 char:1
+ new-alias -name Get-RouteBySQL -value '.\Get-FaxRouteBy. ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ResourceExists: (Get-RouteBySQL:String) [New-Alias], SessionStateException
+ FullyQualifiedErrorId : AliasAlreadyExists,Microsoft.PowerShell.Commands.NewAliasCommand
MAS ... o alias NÃO está definido:
12:07:29|33|~\docs\rts\geafax# gal get-routebysql
gal : This command cannot find a matching alias because an alias with the name 'get-routebysql' does not exist.
At line:1 char:1
+ gal get-routebysql
+ ~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (get-routebysql:String) [Get-Alias], ItemNotFoundException
+ FullyQualifiedErrorId : ItemNotFoundException,Microsoft.PowerShell.Commands.GetAliasCommand
12:07:56|34|~\docs\rts\geafax# gci alias:\get-routebysql
gci : Cannot find path 'get-routebysql' because it does not exist.
At line:1 char:1
+ gci alias:\get-routebysql
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (get-routebysql:String) [Get-ChildItem], ItemNotFoundException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand
Nem todos os outros alias definidos no script foram criados. O que faz com que seja estranho que ele não tenha lançado um erro até que ele tenha chegado ao Get-RouteBySQL antes de reclamar!
Para tornar tudo ainda mais misterioso, posso executar todas as linhas do script diretamente do prompt da CLI e todas elas serão bem-sucedidas!
NÃO fiz alterações no script nem no ambiente do meu Powershell.
Estou completamente perplexo. Alguém tem alguma ideia?
Tags powershell