New-Alias no script falha, ok interativamente

2

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?

    
por ArleyD 23.11.2016 / 19:39

0 respostas

Tags