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.


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 \

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 ...


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

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.


2
% SystemRoot% \ system32 \ WindowsPowerShell \ v1.0 \ powershell.exe. Dans le cas où SystemRoot n'est pas "C: \ Windows"
— Matthieu
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.