Parece que no puedo encontrar nada sobre un Powershell equivalente al where
comando de cmd
. ¿Debo llamarlo cmd
o hay algo más elegante en PS?
62
Parece que no puedo encontrar nada sobre un Powershell equivalente al where
comando de cmd
. ¿Debo llamarlo cmd
o hay algo más elegante en PS?
Respuestas:
Use el
Get-Command
comando pasando el nombre del ejecutable. Rellena la propiedad Path del objeto devuelto (de tipo ApplicationInfo ) con la ruta completamente resuelta al ejecutable.fuente
gcm
lugar de escribir laGet-Command
palabra completa cada vezgcm notepad
ha funcionado perfectamente para mí cuando solo quiero ver a qué archivo estoy llamando.Si solo busca tener la misma funcionalidad sin invocar cmd, puede llamar
where.exe
desde powershell, siempre queC:\Windows\System32
esté en su camino. El comandowhere
(sin el .exe) tiene un aliasWhere-Object
, así que solo especifique el nombre completo.fuente
Get-ChildItem C:\SomeDir -Recurse *.dll
Eso es más o menos lo que hace el viejo where.exe ... ¿había una funcionalidad más específica que intentas imitar?
Editar: En respuesta al comentario de Joshua ... oh, ¿también quieres buscar en tus variables de entorno PATH? No hay problema.
fuente
oh, you want to search your PATH environment variables too?
Um, sí, ese es el punto entero quewhere
, de lo contrario sólo se puede utilizardir
. Der.:-P
where
No es uncmd
comando incorporado . Es una aplicación independiente (where.exe
), por lo que, estrictamente hablando, PowerShell no "necesita un reemplazo".Entonces, ¿por qué no
where
funciona en PowerShell? Parece no hacer nada:De forma predeterminada,
where
tiene un alias para un cmdlet PS incorporado.Bueno, es bueno saberlo, pero ¿hay alguna manera de evitar llamar
where-object
cuando intentas llamarwhere.exe
?La respuesta es sí.
Opción 1
Llamada
where.exe
con extensión. (Esta es una forma práctica de solucionar otros problemas de alias y de priorización de extensiones de archivo).opcion 2
Elimina el alias.
Notas al margen
La respuesta de zdan propone usar
Get-Command
como alternativa. Aunque es un poco más detallado (incluso cuando se usa elgcm
alias predeterminado ), tiene una funcionalidad más rica quewhere.exe
. Si se usa en secuencias de comandos, preste atención a las sutiles diferencias entre los dos. Por ejemplo,where.exe
devuelve todas las coincidencias, mientras queGet-Command
solo devuelve el primer resultado a menos que incluya el-TotalCount
parámetro opcional .Y finalmente, si elimina el
where
alias predeterminado , también podría considerar reasignarlo como un aliasGet-Command
. (Pero esto probablemente sería de dudoso beneficio).fuente