144 votes

Chemin d'accès à Powershell.exe (v 2.0)

Où se trouve Powershell (version 2.0) ? Quel est le chemin d'accès à Powershell.exe ? J'ai Windows Server 2008 et Powershell est installé. Lorsque 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:\>

Il indique que j'ai installé la version 2.0.

9 votes

La "v1.0" que vous voyez ci-dessus est juste un nom de répertoire, pas un numéro de version réel.

0 votes

Il suffit de regarder l'emplacement de la cible du lien PowerShell.

203voto

doobop Points 1267

Je crois que c'est dans C:\Windows\System32\WindowsPowershell\v1.0\ . Afin de confondre les innocents, MS l'a conservé dans un répertoire intitulé "v1.0". En exécutant ce programme sur Windows 7 et en vérifiant le numéro de version par l'intermédiaire de $Host.Version ( Déterminer la version de PowerShell installée ) montre que c'est la version 2.0.

Une autre option est de taper $PSVersionTable à l'invite de commande. Si vous utilisez la version 2.0, le résultat sera le suivant :

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 exécutez 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\

2 votes

Peut-être s'agissait-il d'un cas de chemins codés en dur avec lesquels ils voulaient préserver la compatibilité ? Microsoft étant Microsoft

14 votes

"Afin de confondre les innocents" va devenir l'une de mes citations préférées.

62voto

Simon B Points 91

Je pense que $PsHome a l'information que vous recherchez ?

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

PS .> Get-Help about\_automatic\_variables

TOPIC
    about\_Automatic\_Variables ...

41voto

Nathan Hartley Points 1115

Voici un moyen...

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

Voici peut-être une meilleure méthode, car elle renvoie le premier résultat du chemin, comme si vous aviez exécuté Powershell depuis une invite de commande...

(Get-Command powershell.exe).Definition

4 votes

En ce qui me concerne, c'est une meilleure réponse que celle qui est actuellement votée jusqu'à 35. La question originale semblait concerner le chemin d'accès à l'exécutable, l'information sur la version étant accessoire à la question. Cette réponse répond directement à cette question, en contournant même la réponse "supposée être" et en permettant à une personne de trouver 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 chercher ici, donc j'apprécie).

0 votes

Recherche basée sur l'exécutable en cours powershell.exe est un peu trop souple, car vous pourriez facilement renommer un autre exécutable en powershell.exe pour qu'il reprenne ce processus à la place. Get-Process -Id $PID pourrait fonctionner, bien que je ne sois pas sûr de la version $PID a été introduit en .

0 votes

Je comprends votre point de vue "trop détendu", cependant, l'utilisation de $PID renverra l'hôte actuel, qui peut ne pas être un interpréteur Powershell. Comme Powershell_ise.exe, par exemple.

13voto

ravikanth Points 9573

C'est toujours C:\Windows\System32\WindowsPowershell\v1.0. C'est ce que j'ai entendu ou lu quelque part, pour des raisons de compatibilité ascendante.

2 votes

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

1 votes

Ce n'est pas le cas pour PowerShell 32 bits sur Windows 64 bits. Dans ce cas, il est situé à C:\Windows\SysWOW64\WindowsPowerShell\v1.0.

11voto

Jack Taylor Points 2090

Pour obtenir le chemin complet vers le PowerShell en cours d'exécution, vous pouvez utiliser ceci :

[System.Diagnostics.Process]::GetCurrentProcess().MainModule.FileName

Le chemin résultant inclut le nom de fichier de l'exécutable PowerShell, ce qui vous permet de faire la distinction entre PowerShell et PowerShell ISE (contrairement à $PsHome, qui ne vous montre que le dossier PowerShell). De plus, contrairement à Get-Process, il n'est pas affecté par d'autres processus en cours d'exécution sur le système, de sorte que vous obtenez toujours le chemin d'accès correct pour l'architecture actuelle (32 bits ou 64 bits).

El Méthode GetCurrentProcess est disponible à partir de .NET Framework 1.1 et .NET Core 1.0, ce qui devrait donc fonctionner avec n'importe quelle version de .NET/PowerShell.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X