Percorso per Powershell.exe (v 2.0)


114

Dove si trova Powershell (versione 2.0)? Qual è il percorso per Powershell.exe? Ho Windows Server 2008 e Powershell installati. Quando guardo questa cartella:

PS C:\Windows\System32\WindowsPowerShell> dir


    Directory: C:\Windows\System32\WindowsPowerShell


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

Ho solo Powershell v1.0. Ma quando scrivo

PS C:\> $Host.version

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


PS C:\>

Mostra che ho installato la v2.0.


8
La "v1.0" che vedi sopra è solo un nome di directory, non un numero di versione effettivo.
doobop

Basta guardare la posizione di destinazione del collegamento di PowerShell
oxfn

Risposte:


171

Credo sia dentro C:\Windows\System32\WindowsPowershell\v1.0\. Per confondere gli innocenti, MS lo teneva in una directory denominata "v1.0". L'esecuzione su Windows 7 e il controllo del numero di versione tramite $Host.Version( Determina la versione di PowerShell installata ) mostra che è 2.0.

Un'altra opzione è digitare $PSVersionTableal prompt dei comandi. Se stai utilizzando la v2.0, l'output sarà:

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 stai utilizzando la versione 1.0, la variabile non esiste e non ci sarà alcun output.

Localizzazione PowerShell versione 1.0, 2.0, 3.0, 4.0:

  • Versione a 64 bit: C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \
  • Versione a 32 bit: C: \ Windows \ SysWOW64 \ WindowsPowerShell \ v1.0 \

1
Forse era un caso di percorsi hard-coded con cui volevano preservare la compatibilità? Microsoft è Microsoft
Tiago Leite

6
"Al fine di confondere gli innocenti" sarà una delle mie citazioni preferite.
simlev

48

Penso che $ PsHome abbia le informazioni che cerchi?

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

PS.> Get-Help about_automatic_variables

ARGOMENTO
    about_Automatic_Variables ...


29

Ecco un modo ...

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

Ecco forse un modo migliore, in quanto restituisce il primo colpo sul percorso, proprio come se avessi eseguito Powershell da un prompt dei comandi ...

(Get-Command powershell.exe).Definition

3
Per quanto mi riguarda, questa è una risposta migliore di quella attualmente votata fino a 35. La domanda originale sembrava riguardare il percorso per l'eseguibile, con le informazioni sulla versione che erano secondarie alla domanda. Questa risposta affronta direttamente quella domanda, aggirando anche la risposta "dovrebbe essere" e consentendo a una persona di scoprire esattamente dove si trova l'exe sul proprio sistema, anche se quel sistema è diverso da quello predefinito. (Questo è quello che sono venuto qui a cercare, quindi lo apprezzo.)
Todd Walton,

La ricerca basata sull'essere eseguibile powershell.exeè un po 'troppo rilassata, dal momento che potresti facilmente rinominare un altro eseguibile in powershell.exee fare in modo che riprenda quel processo. Get-Process -Id $PIDfunzionerebbe, anche se non sono sicuro in quale versione sia $PIDstata introdotta.
Charles Grunwald

Vedo il tuo punto "troppo rilassato", tuttavia, l'utilizzo di $ PID restituirà l'host corrente, che potrebbe non essere un interprete di Powershell. Come Powershell_ise.exe, ad esempio.
Nathan Hartley

forse da novembre 2011 le proprietà sono cambiate. Per me (a luglio 2016, utilizzando Windows Server 2012) la proprietà .Source non esiste, posso invece utilizzare la proprietà .Definition che restituisce: "C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe" . La mia variabile $ PSHome contiene: "C: \ Windows \ System32 \ WindowsPowerShell \ v1.0" Inoltre, se usi get-process, considera l'utilizzo di 'powershell *' invece di solo powershell, nel caso tu stia usando powershell_ise. HTH
Marcelo Finki

Risposta modificata dall'utilizzo di .Source a .Definition.
Nathan Hartley il

12

È sempre C: \ Windows \ System32 \ WindowsPowershell \ v1.0. È stato lasciato così perché la compatibilità all'indietro è ciò che ho sentito o letto da qualche parte.


2
% SystemRoot% \ system32 \ WindowsPowerShell \ v1.0 \ PowerShell.exe. Nel caso in cui SystemRoot non sia "C: \ Windows"
Matthew
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.