Шлях до Powershell.exe (v 2.0)


114

Де знаходиться Powershell (версія 2.0)? Який шлях до Powershell.exe? У мене встановлено Windows Server 2008 та Powershell. Коли я дивлюся на цю папку:

PS C:\Windows\System32\WindowsPowerShell> dir


    Directory: C:\Windows\System32\WindowsPowerShell


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

У мене є тільки Powershell v1.0. Але коли я набираю

PS C:\> $Host.version

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


PS C:\>

Це показує, що в мене встановлено v2.0.


8
"V1.0", який ви бачите вище, - це лише ім'я каталогу, а не фактичний номер версії.
doobop

Подивіться на цільове місце посилання PowerShell
oxfn

Відповіді:


171

Я вірю, що це в C:\Windows\System32\WindowsPowershell\v1.0\. Для того, щоб заплутати невинних, MS зберігала його в каталозі з написом "v1.0". Якщо запустити це в Windows 7 і перевірити номер версії за допомогою $Host.Version( Визначити встановлену версію PowerShell ), це показник 2.0.

Ще один варіант - введіть $PSVersionTableу командному рядку. Якщо ви використовуєте v2.0, вихід буде:

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

Якщо ви використовуєте версію 1.0, змінна не існує, і не буде виводу.

Локалізація PowerShell версії 1.0, 2.0, 3.0, 4.0:

  • Версія з 64 бітами: C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \
  • 32-бітна версія: C: \ Windows \ SysWOW64 \ WindowsPowerShell \ v1.0 \

1
Можливо, це були випадки важко кодованих шляхів, якими вони хотіли зберегти сумісність? Майкрософт - Майкрософт
Тіаго Лейте

6
"Для того, щоб заплутати невинних", буде однією з моїх улюблених цитат.
simlev

48

Я думаю, що у $ PsHome є інформація, яку ти шукаєш?

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

PS.> Отримайте довідку про_automatic_variables

ТЕМА
    about_Automatic_Variables ...


29

Ось один із способів ...

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

Ось, можливо, кращий спосіб, оскільки він повертає перший удар на шляху, так само, як якщо б ви запустили Powershell з командного рядка ...

(Get-Command powershell.exe).Definition

3
Що стосується мене, це краща відповідь, ніж той, про який зараз проголосували до 35. Оригінальне запитання, здавалося, стосувалося шляху до виконуваного файлу, інформація про версію повинна бути випадковою. Ця відповідь безпосередньо стосується цього питання, минаючи навіть відповідь "належним бути" і дозволяє людині дізнатися, де саме знаходиться exe у власній системі, навіть якщо ця система відрізняється від типової. (Це те, що я прийшов сюди шукати, тому я ціную це.)
Тодд Уолтон,

Пошук на основі виконуваних файлів powershell.exeтрохи надто розслаблений, тому що ви можете легко перейменувати інший виконуваний файл powershell.exeі надати йому замість цього процес. Get-Process -Id $PIDбуде працювати, хоча я не впевнений, в яку версію $PIDбуло введено.
Чарльз Грюнвальд

Я бачу вашу "занадто розслаблену" точку, однак використання $ PID поверне поточний хост, який може бути не інтерпретатором Powershell. Наприклад, Powershell_ise.exe, наприклад.
Натан Хартлі

можливо, з листопада 2011 року властивості змінилися. Для мене (у липні 2016 року, використовуючи Windows Server 2012) властивість. Джерело не існує. Натомість я можу використовувати властивість. Визначення, яке повертає: "C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe" . Моя змінна $ PSHome містить: "C: \ Windows \ System32 \ WindowsPowerShell \ v1.0" Крім того, якщо ви використовуєте get-process, розгляньте можливість використання "powershell *" замість просто powerhell, якщо ви використовуєте powershell_ise. HTH
Марсело Фінкі

Відповідь змінено від використання .Source до .Definition.
Натан Хартлі

12

Це завжди C: \ Windows \ System32 \ WindowsPowershell \ v1.0. Залишилося так, щоб відстала сумісність - це те, що я десь чув чи читав.


2
% SystemRoot% \ system32 \ WindowsPowerShell \ v1.0 \ powershell.exe. У випадку, якщо SystemRoot не є "C: \ Windows"
Метью
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.