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.

Jjoras
fonte
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 \
doobop
fonte
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 ...

Simon B
fonte
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
Nathan Hartley
fonte
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.

Ravikanth
fonte
2
% SystemRoot% \ system32 \ WindowsPowerShell \ v1.0 \ powershell.exe. Caso SystemRoot não seja "C: \ Windows"
Mateus