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.