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.