Parece que no puedo encontrar nada sobre un Powershell equivalente al wherecomando de cmd. ¿Debo llamarlo cmdo hay algo más elegante en PS?
62
Parece que no puedo encontrar nada sobre un Powershell equivalente al wherecomando de cmd. ¿Debo llamarlo cmdo hay algo más elegante en PS?
Respuestas:
Use el
Get-Commandcomando pasando el nombre del ejecutable. Rellena la propiedad Path del objeto devuelto (de tipo ApplicationInfo ) con la ruta completamente resuelta al ejecutable.fuente
gcmlugar de escribir laGet-Commandpalabra completa cada vezgcm notepadha 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.exedesde powershell, siempre queC:\Windows\System32esté 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 *.dllEso 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.:-PwhereNo es uncmdcomando incorporado . Es una aplicación independiente (where.exe), por lo que, estrictamente hablando, PowerShell no "necesita un reemplazo".Entonces, ¿por qué no
wherefunciona en PowerShell? Parece no hacer nada:De forma predeterminada,
wheretiene un alias para un cmdlet PS incorporado.Bueno, es bueno saberlo, pero ¿hay alguna manera de evitar llamar
where-objectcuando intentas llamarwhere.exe?La respuesta es sí.
Opción 1
Llamada
where.execon 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-Commandcomo alternativa. Aunque es un poco más detallado (incluso cuando se usa elgcmalias 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.exedevuelve todas las coincidencias, mientras queGet-Commandsolo devuelve el primer resultado a menos que incluya el-TotalCountparámetro opcional .Y finalmente, si elimina el
wherealias predeterminado , también podría considerar reasignarlo como un aliasGet-Command. (Pero esto probablemente sería de dudoso beneficio).fuente