Ruta a Powershell.exe (v 2.0)

114

¿Dónde se encuentra Powershell (versión 2.0)? ¿Cuál es la ruta a Powershell.exe? Tengo Windows Server 2008 y Powershell instalados. Cuando miro esta carpeta:

PS C:\Windows\System32\WindowsPowerShell> dir


    Directory: C:\Windows\System32\WindowsPowerShell


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----         20.4.2010     17:09            v1.0

Solo tengo Powershell v1.0. Pero cuando escribo

PS C:\> $Host.version

Major  Minor  Build  Revision
-----  -----  -----  --------
2      0      -1     -1


PS C:\>

Muestra que tengo instalada la v2.0.

jjoras
fuente
8
La "v1.0" que ve arriba es solo un nombre de directorio, no un número de versión real.
Doobop
Solo mire la ubicación de destino del enlace de PowerShell
oxfn

Respuestas:

171

Creo que está en C:\Windows\System32\WindowsPowershell\v1.0\. Para confundir a los inocentes, MS lo mantuvo en un directorio con la etiqueta "v1.0". Ejecutar esto en Windows 7 y verificar el número de versión a través de $Host.Version( Determinar la versión instalada de PowerShell ) muestra que es 2.0.

Otra opción es escribir $PSVersionTableen el símbolo del sistema. Si está ejecutando v2.0, la salida será:

Name                           Value
----                           -----
CLRVersion                     2.0.50727.4927
BuildVersion                   6.1.7600.16385
PSVersion                      2.0
WSManStackVersion              2.0
PSCompatibleVersions           {1.0, 2.0}
SerializationVersion           1.1.0.1
PSRemotingProtocolVersion      2.1

Si está ejecutando la versión 1.0, la variable no existe y no habrá salida.

Localización PowerShell versión 1.0, 2.0, 3.0, 4.0:

  • Versión de 64 bits: C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \
  • Versión de 32 bits: C: \ Windows \ SysWOW64 \ WindowsPowerShell \ v1.0 \
doobop
fuente
1
¿Quizás fue un caso de rutas codificadas de forma rígida con las que querían preservar la compatibilidad? Microsoft es Microsoft
Tiago Leite
6
"Para confundir a los inocentes" va a ser una de mis citas favoritas.
simlev
48

Creo que $ PsHome tiene la información que busca.

PS.> $ Ps
C: \ Windows \ System32 \ WindowsPowerShell \ v1.0

PS.> Obtener ayuda sobre_variables_automáticas

TEMA
    about_Automatic_Variables ...

Simón B
fuente
29

Aquí hay una forma ...

(Get-Process powershell | select -First 1).Path

Esta es posiblemente una mejor manera, ya que devuelve el primer golpe en la ruta, como si hubiera ejecutado Powershell desde un símbolo del sistema ...

(Get-Command powershell.exe).Definition
Nathan Hartley
fuente
3
En lo que a mí respecta, esta es una respuesta mejor que la que se votó actualmente hasta 35. La pregunta original parecía ser sobre la ruta al ejecutable, y la información de la versión era incidental a la pregunta. Esta respuesta aborda directamente esa pregunta, pasando por alto incluso la respuesta "supuestamente" y permitiendo que una persona descubra exactamente dónde está el exe en su propio sistema, incluso si ese sistema es diferente al predeterminado. (Esto es lo que vine aquí buscando, así que lo agradezco.)
Todd Walton
La búsqueda basada en el ejecutable powershell.exees un poco demasiado relajada, ya que podría cambiar fácilmente el nombre de otro ejecutable a powershell.exey hacer que recoja ese proceso en su lugar. Get-Process -Id $PIDfuncionaría, aunque no estoy seguro de en qué versión $PIDse introdujo.
Charles Grunwald
Veo su punto "demasiado relajado", sin embargo, usar el $ PID devolverá el host actual, que puede que no sea un intérprete de Powershell. Como Powershell_ise.exe, por ejemplo.
Nathan Hartley
tal vez desde noviembre de 2011 las propiedades hayan cambiado. Para mí (en julio de 2016, usando Windows Server 2012) la propiedad .Source no existe, en su lugar, puedo usar la propiedad .Definition que devuelve: "C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe" . Mi variable $ PSHome contiene: "C: \ Windows \ System32 \ WindowsPowerShell \ v1.0" Además, si usa get-process, considere usar 'powershell *' en lugar de solo powershell, en caso de que esté usando powershell_ise. HTH
Marcelo Finki
Se cambió la respuesta de usar .Source a .Definition.
Nathan Hartley
12

Siempre es C: \ Windows \ System32 \ WindowsPowershell \ v1.0. Se dejó así por compatibilidad con versiones anteriores, es lo que escuché o leí en alguna parte.

ravikanth
fuente
2
% SystemRoot% \ system32 \ WindowsPowerShell \ v1.0 \ powershell.exe. En caso de que SystemRoot no sea "C: \ Windows"
Mateo