Não consigo encontrar nada sobre o equivalente do Powershell ao where
comando cmd
. Devo apenas chamá-lo cmd
ou existe algo mais elegante no PS?
61
Não consigo encontrar nada sobre o equivalente do Powershell ao where
comando cmd
. Devo apenas chamá-lo cmd
ou existe algo mais elegante no PS?
Respostas:
Use o
Get-Command
commandlet passando o nome do executável. Ele preenche a propriedade Path do objeto retornado (do tipo ApplicationInfo ) com o caminho totalmente resolvido para o executável.fonte
gcm
ao invés de digitar toda aGet-Command
palavra de cada vezgcm notepad
está funcionando perfeitamente para mim quando eu só quero ver para qual arquivo estou chamando.Se você deseja apenas ter a mesma funcionalidade sem chamar o cmd, pode ligar
where.exe
do powershell, desde queC:\Windows\System32
esteja no seu caminho. O comandowhere
(sem o .exe) é um alias paraWhere-Object
, portanto, basta especificar o nome completo.fonte
Get-ChildItem C:\SomeDir -Recurse *.dll
Isso é basicamente o que o antigo where.exe faz ... havia alguma funcionalidade mais específica que você está tentando imitar?
Edit: Em resposta ao comentário de Joshua ... oh, você também deseja pesquisar suas variáveis de ambiente PATH? Sem problemas.
fonte
oh, you want to search your PATH environment variables too?
Hum, sim, esse é o ponto inteiro parawhere
, caso contrário, você pode simplesmente usardir
. Der.:-P
where
não é umcmd
comando incorporado . É um aplicativo independente (where.exe
), portanto, falando estritamente o PowerShell "não precisa de substituição".Então, por que não
where
funciona no PowerShell? Parece não fazer nada:Por padrão,
where
é alias a um cmdlet PS interno.Bem, isso é bom saber, mas existe uma maneira de evitar ligar
where-object
ao tentar ligarwhere.exe
?A resposta é sim.
Opção 1
Ligue
where.exe
com ramal. (Esta é uma maneira prática de solucionar outros problemas de alias e de priorização de extensão de arquivo.)opção 2
Remova o alias.
Notas laterais
A resposta de zdan propõe o uso
Get-Command
como alternativa. Embora seja um pouco mais detalhado (mesmo ao usar ogcm
alias padrão ), ele tem uma funcionalidade mais rica do quewhere.exe
. Se usado em scripts, preste atenção às diferenças sutis entre os dois. Por exemplo,where.exe
retorna todas as correspondências, enquantoGet-Command
retorna apenas o primeiro resultado, a menos que você inclua o-TotalCount
parâmetro opcional .E, finalmente, se você remover o
where
alias padrão , considere também atribuí-lo como um alias paraGet-Command
. (Mas isso provavelmente seria um benefício duvidoso.)fonte