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

回答:


170

にあると思います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
多分それは彼らが互換性を維持したかったハードコーディングされたパスのケースでしたか?マイクロソフトはマイクロソフト
Tiago Leite

5
「罪のない人を混乱させるために」は私のお気に入りの引用の1つになります。
simlev

47

$ PsHomeはあなたが探している情報を持っていると思いますか?

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

PS。> Get-Help about_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に導入されました。
チャールズGrunwaldの

「リラックスしすぎた」点がわかりましたが、$ PIDを使用すると現在のホストが返されるため、Powershellインタープリターではない可能性があります。たとえば、Powershell_ise.exeのように。
Nathan Hartley、2016年

おそらく2011年11月以降、プロパティは変更されています。私(2016年7月、Windows Server 2012を使用)の場合、プロパティ.Sourceは存在しません。代わりに、プロパティ.Definitionを使用して、「C:\ Windows \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe」を返すことができます。 。$ PSHome変数には、「C:\ Windows \ System32 \ WindowsPowerShell \ v1.0」が含まれています。また、get-processを使用する場合は、powershell_iseを使用している場合は、powershellだけでなく 'powershell *'の使用を検討してください。HTH
Marcelo Finki 2016

回答を.Sourceの使用から.Definitionに変更しました。
Nathan Hartley

12

常にC:\ Windows \ System32 \ WindowsPowershell \ v1.0です。私がどこかで聞いたり読んだりする後方互換性のために、そのように残されました。


2
%SystemRoot%\ system32 \ WindowsPowerShell \ v1.0 \ powershell.exe。SystemRootが "C:\ Windows"でない場合
Matthew
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.