Caminho para Powershell.exe (v 2.0)


114

Onde está localizado o Powershell (versão 2.0)? Qual é o caminho para o Powershell.exe? Tenho o Windows Server 2008 e o Powershell instalados. Quando eu olho para esta pasta:

PS C:\Windows\System32\WindowsPowerShell> dir


    Directory: C:\Windows\System32\WindowsPowerShell


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

Eu tenho apenas o Powershell v1.0. Mas quando eu digito

PS C:\> $Host.version

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


PS C:\>

Isso mostra que tenho a v2.0 instalada.


8
O "v1.0" que você vê acima é apenas um nome de diretório, não um número de versão real.
— doobop de

Basta olhar para o local de destino do link do PowerShell
— oxfn

Respostas:


170

Eu acredito que é no C:\Windows\System32\WindowsPowershell\v1.0\. Para confundir os inocentes, a MS o manteve em um diretório chamado "v1.0". Executar isso no Windows 7 e verificar o número da versão via $Host.Version( Determinar a versão instalada do PowerShell ) mostra que é 2.0.

Outra opção é digitar $PSVersionTableno prompt de comando. Se você estiver executando a v2.0, a saída 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

Se você estiver executando a versão 1.0, a variável não existe e não haverá saída.

Localização PowerShell versão 1.0, 2.0, 3.0, 4.0:

  • Versão de 64 bits: C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \
  • Versão de 32 bits: C: \ Windows \ SysWOW64 \ WindowsPowerShell \ v1.0 \

1
Talvez fosse um caso de caminhos embutidos em código com os quais eles queriam preservar a compatibilidade? Microsoft sendo Microsoft
— Tiago Leite

5
"Para confundir os inocentes" será uma das minhas citações favoritas.
— simlev

47

Acho que $ PsHome tem as informações que você procura?

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

PS.> Get-Help about_automatic_variables

TÓPICO
    about_Automatic_Variables ...


29

Aqui está uma maneira ...

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

Esta é possivelmente uma maneira melhor, pois retorna a primeira ocorrência no caminho, como se você tivesse executado o Powershell em um prompt de comando ...

(Get-Command powershell.exe).Definition

3
No que me diz respeito, esta é uma resposta melhor do que a atualmente votada para 35. A pergunta original parecia ser sobre o caminho para o executável, com as informações da versão sendo secundárias à pergunta. Essa resposta aborda diretamente essa pergunta, contornando até mesmo a resposta "supostamente" e permitindo que uma pessoa descubra exatamente onde o exe está em seu próprio sistema, mesmo que esse sistema seja diferente do padrão. (É isso que eu vim aqui procurando, então agradeço.)
— Todd Walton

Pesquisar com base no executável powershell.exeé um pouco relaxado, já que você poderia facilmente renomear outro executável para powershell.exee fazer com que ele selecione esse processo. Get-Process -Id $PIDfuncionaria, embora eu não tenha certeza de qual versão $PIDfoi introduzida.
— Charles Grunwald

Vejo seu ponto "muito relaxado", no entanto, usar o $ PID retornará o host atual, que pode não ser um interpretador Powershell. Como Powershell_ise.exe, por exemplo.
— Nathan Hartley

talvez desde novembro de 2011 as propriedades tenham mudado. Para mim (em julho de 2016, usando o Windows Server 2012) a propriedade .Source não existe, em vez disso, posso usar a propriedade .Definition que retorna: "C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe" . Minha variável $ PSHome contém: "C: \ Windows \ System32 \ WindowsPowerShell \ v1.0" Além disso, se você usar get-process, considere usar 'powershell *' em vez de apenas powershell, caso esteja usando powershell_ise. HTH
— Marcelo Finki

Resposta alterada de usando .Source para .Definition.
— Nathan Hartley

12

É sempre C: \ Windows \ System32 \ WindowsPowershell \ v1.0. Foi deixado assim para compatibilidade retroativa, foi o que ouvi ou li em algum lugar.


2
% SystemRoot% \ system32 \ WindowsPowerShell \ v1.0 \ powershell.exe. Caso SystemRoot não seja "C: \ Windows"
— Mateus
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.