¿Cómo le pregunto a PowerShell dónde está algo?
Por ejemplo, "qué bloc de notas" y devuelve el directorio desde donde se ejecuta notepad.exe de acuerdo con las rutas actuales.
unix
powershell
command
Chris en desarrollo
fuente
fuente

Get-Command <command> | Format-Table Path, Nameasí puedo obtener la ruta donde también se encuentra el comando.select -expandproperty Path.(gcm <command>).definitionpara obtener solo las rutas.gcmes el alias predeterminado paraGet-Command. También puede utilizar comodines, por ejemplo:(gcm win*.exe).definition.Aquí hay un equivalente real * nix, es decir, proporciona una salida de estilo * nix.
Simplemente reemplácelo con lo que esté buscando.
Cuando lo agregue a su perfil, querrá usar una función en lugar de un alias porque no puede usar alias con tuberías:
Ahora, cuando vuelva a cargar su perfil, puede hacer esto:
fuente
oktaque apunta a un script de Powershell llamadookta.ps1que no está en mi$PATH. El uso de la respuesta aceptada devuelve el nombre del script (okta -> okta.ps1). Esto está bien pero no me dice la ubicación deokta.ps1. Sin embargo, usar esta respuesta me da todo el camino (C:\Users\blah\etc\scripts\okta.ps1). Entonces +1 de mi parte.Usualmente solo escribo:
o
gcm es el alias predeterminado para Get-Command.
En mi sistema, gcm note * salidas:
Obtiene el directorio y el comando que coincide con lo que está buscando.
fuente
gcm note* | select CommandType, Name, Definition. Sin embargo, si lo ejecuta a menudo, probablemente debería envolverlo en una función.Prueba este ejemplo:
fuente
(gcm py.exe).pathMi propuesta para la función Which:
fuente
Un partido rápido y sucio con Unix
whichesPero devuelve varias líneas si existen, entonces se convierte en
fuente
where.exe wheredebería decirteC:\Windows\System32\where.exewhere.exees equivalente awhich -a, ya que devolverá todos los ejecutables coincidentes, no solo el primero que se ejecutará. Es decir,where.exe notepaddac:\windows\notepad.exeyc:\windows\system32\notepad.exe. Así que esto es particularmente no adecuado para la forma$(which command). (Otro problema es que imprimirá un mensaje de error agradable y útil si no se encuentra el comando, que tampoco se expandirá bien$(), eso se puede remediar/Q, pero no como un alias.)whereparece buscar la variable PATH del sistema y no la variable PATH del shell actual. Ver esta preguntaEsto parece hacer lo que quieres (lo encontré en http://huddledmasses.org/powershell-find-path/ ):
fuente
Comprueba este PowerShell que .
El código provisto allí sugiere esto:
fuente
Me gusta
Get-Command | Format-List, o más corto, usar alias para los dos y solo parapowershell.exe:Puedes encontrar alias como este:
La finalización de pestañas funciona con
gcm.fuente
Pruebe el
wherecomando en Windows 2003 o posterior (o Windows 2000 / XP si ha instalado un Kit de recursos).Por cierto, esto recibió más respuestas en otras preguntas:
¿Hay un equivalente de 'cual' en Windows?
¿PowerShell equivalente al
whichcomando Unix ?fuente
wherealias alWhere-Objectcomando en Powershell, por lo que escribirwhere <item>en un indicador de Powershell no produce nada. Por lo tanto, esta respuesta es completamente incorrecta: como se señaló en la respuesta aceptada en la primera pregunta vinculada, para obtener el DOSwhere, debe escribirwhere.exe <item>.Tengo esta
whichfunción avanzada en mi perfil de PowerShell:fuente
Utilizar:
O esta versión, llamando al comando where original.
Esta versión también funciona mejor, porque no se limita a los archivos bat:
fuente
Si desea un comando que acepte la entrada de la tubería o como parámetro, debe intentar esto:
copie y pegue el comando en su perfil (
notepad $profile).Ejemplos:
fuente