Chemin vers Powershell.exe (v 2.0)

114

Où se trouve le Powershell (version 2.0)? Quel est le chemin d'accès à Powershell.exe? J'ai installé Windows Server 2008 et Powershell. Quand je regarde ce dossier:

PS C:\Windows\System32\WindowsPowerShell> dir


    Directory: C:\Windows\System32\WindowsPowerShell


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

Je n'ai que Powershell v1.0. Mais quand je tape

PS C:\> $Host.version

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


PS C:\>

Cela montre que la v2.0 est installée.

jjoras
la source
8
Le "v1.0" que vous voyez ci-dessus est juste un nom de répertoire, pas un numéro de version réel.
doobop
Il suffit de regarder l'emplacement cible du lien PowerShell
oxfn

Réponses:

171

Je crois que c'est dedans C:\Windows\System32\WindowsPowershell\v1.0\. Afin de semer la confusion chez les innocents, MS l'a conservé dans un répertoire nommé "v1.0". L'exécuter sur Windows 7 et vérifier le numéro de version via $Host.Version( Déterminer la version PowerShell installée ) montre qu'il s'agit de 2.0.

Une autre option consiste à taper $PSVersionTableà l'invite de commande. Si vous exécutez v2.0, la sortie sera:

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 vous utilisez la version 1.0, la variable n'existe pas et il n'y aura pas de sortie.

Localisation PowerShell version 1.0, 2.0, 3.0, 4.0:

  • Version 64 bits: C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \
  • Version 32 bits: C: \ Windows \ SysWOW64 \ WindowsPowerShell \ v1.0 \
doobop
la source
1
C'était peut-être un cas de chemins codés en dur avec lesquels ils voulaient préserver la compatibilité? Microsoft étant Microsoft
Tiago Leite
6
"Afin de confondre les innocents" va être l'une de mes citations préférées.
simlev
48

Je pense que $ PsHome a les informations que vous recherchez?

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

PS.> Get-Help about_automatic_variables

SUJET
    about_Automatic_Variables ...

Simon B
la source
29

Voici une façon ...

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

Voici peut-être un meilleur moyen, car il renvoie le premier hit sur le chemin, comme si vous aviez exécuté Powershell à partir d'une invite de commande ...

(Get-Command powershell.exe).Definition
Nathan Hartley
la source
3
En ce qui me concerne, c'est une meilleure réponse que celle actuellement votée jusqu'à 35. La question d'origine semblait concerner le chemin d'accès à l'exécutable, les informations de version étant accessoires à la question. Cette réponse répond directement à cette question, contournant même la réponse «supposée être» et permettant à une personne de savoir exactement où se trouve l'exe sur son propre système, même si ce système diffère de celui par défaut. (C'est ce que je suis venu ici à la recherche, alors je l'apprécie.)
Todd Walton
La recherche basée sur l'exécutable powershell.exeest un peu trop détendue, car vous pouvez facilement renommer un autre exécutable en powershell.exe, et lui faire reprendre ce processus à la place. Get-Process -Id $PIDfonctionnerait, même si je ne suis pas sûr de la version $PIDintroduite.
Charles Grunwald
Je vois votre point "trop ​​détendu", cependant, l'utilisation du $ PID renverra l'hôte actuel, qui n'est peut-être pas un interpréteur Powershell. Comme Powershell_ise.exe, par exemple.
Nathan Hartley
peut-être que depuis novembre 2011, les propriétés ont changé. Pour moi (en juillet 2016, en utilisant Windows Server 2012) la propriété .Source n'existe pas, à la place, je peux utiliser la propriété .Definition qui renvoie: "C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe" . Ma variable $ PSHome contient: "C: \ Windows \ System32 \ WindowsPowerShell \ v1.0" De plus, si vous utilisez get-process, pensez à utiliser 'powershell *' au lieu de juste powershell, au cas où vous utiliseriez powershell_ise. HTH
Marcelo Finki
Réponse modifiée de l'utilisation de .Source à .Definition.
Nathan Hartley
12

Il s'agit toujours de C: \ Windows \ System32 \ WindowsPowershell \ v1.0. Il a été laissé comme ça pour que la compatibilité ascendante soit ce que j'ai entendu ou lu quelque part.

ravikanth
la source
2
% SystemRoot% \ system32 \ WindowsPowerShell \ v1.0 \ powershell.exe. Dans le cas où SystemRoot n'est pas "C: \ Windows"
Matthieu