Đường dẫn đến Powershell.exe (v 2.0)


114

Powershell (phiên bản 2.0) nằm ở đâu? Đường dẫn đến Powershell.exe là gì? Tôi đã cài đặt Windows Server 2008 và Powershell. Khi tôi nhìn vào thư mục này:

PS C:\Windows\System32\WindowsPowerShell> dir


    Directory: C:\Windows\System32\WindowsPowerShell


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

Tôi chỉ có Powershell v1.0. Nhưng khi tôi gõ

PS C:\> $Host.version

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


PS C:\>

Nó cho thấy rằng tôi đã cài đặt v2.0.


8
"V1.0" bạn thấy ở trên chỉ là tên thư mục, không phải là số phiên bản thực.
doobop

Chỉ cần nhìn vào vị trí mục tiêu của liên kết PowerShell
oxfn 27/12/13

Câu trả lời:


170

Tôi tin rằng nó vào C:\Windows\System32\WindowsPowershell\v1.0\. Để gây nhầm lẫn cho những người vô tội, MS đã giữ nó trong một thư mục có nhãn "v1.0". Chạy tính năng này trên Windows 7 và kiểm tra số phiên bản thông qua $Host.Version( Xác định phiên bản PowerShell đã cài đặt ) cho thấy đó là 2.0.

Một tùy chọn khác là gõ $PSVersionTabletại dấu nhắc lệnh. Nếu bạn đang chạy v2.0, đầu ra sẽ là:

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

Nếu bạn đang chạy phiên bản 1.0, biến không tồn tại và sẽ không có đầu ra.

Bản địa hóa PowerShell phiên bản 1.0, 2.0, 3.0, 4.0:

  • Phiên bản 64 bit: C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \
  • Phiên bản 32 bit: C: \ Windows \ SysWOW64 \ WindowsPowerShell \ v1.0 \

1
Có thể đó là một trường hợp của các đường dẫn được mã hóa cứng mà họ muốn duy trì khả năng tương thích? Microsoft là Microsoft
Tiago Leite

5
"Để nhầm lẫn người vô tội" sẽ là một trong những câu nói yêu thích của tôi.
simlev

47

Tôi nghĩ $ PsHome có thông tin bạn đang theo dõi?

Tái bút> $ PsHome
C: \ Windows \ System32 \ WindowsPowerShell \ v1.0

Tái bút> Nhận trợ giúp about_automatic_variables

ĐỀ TÀI
    about_Automatic_Variables ...


29

Đây là một cách ...

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

Đây có thể là một cách tốt hơn, vì nó trả về lần truy cập đầu tiên trên đường dẫn, giống như nếu bạn đã chạy Powershell từ dấu nhắc lệnh ...

(Get-Command powershell.exe).Definition

3
Theo như tôi lo lắng, đây là một câu trả lời tốt hơn câu trả lời hiện được bình chọn lên đến 35. Câu hỏi ban đầu dường như là về đường dẫn đến tệp thực thi, với thông tin phiên bản là ngẫu nhiên của câu hỏi. Câu trả lời này giải quyết trực tiếp câu hỏi đó, bỏ qua ngay cả câu trả lời "được cho là" và cho phép một người tìm ra chính xác vị trí exe trên hệ thống của riêng họ, ngay cả khi hệ thống đó khác với mặc định. (Đây là những gì tôi đến đây để tìm kiếm, vì vậy tôi đánh giá cao nó.)
Todd Walton

Tìm kiếm dựa trên thực thể thực thi powershell.exelà một chút quá thoải mái, vì bạn có thể dễ dàng đổi tên tệp thực thi khác thành powershell.exevà để nó thực hiện quy trình đó thay thế. Get-Process -Id $PIDsẽ hoạt động, mặc dù tôi không chắc phiên bản nào $PIDđã được giới thiệu.
Charles Grunwald

Tôi thấy điểm "quá thoải mái" của bạn, tuy nhiên, việc sử dụng $ PID sẽ trả về máy chủ hiện tại, máy chủ này có thể không phải là trình thông dịch Powershell. Ví dụ như Powershell_ise.exe.
Nathan Hartley

có thể kể từ tháng 11 năm 2011 tài sản đã thay đổi. Đối với tôi (vào tháng 7 năm 2016, sử dụng Windows Server 2012) thuộc tính .Source không tồn tại, Thay vào đó, tôi có thể sử dụng thuộc tính .Definition trả về: "C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe" . Biến $ PSHome của tôi chứa: "C: \ Windows \ System32 \ WindowsPowerShell \ v1.0" Ngoài ra, nếu bạn sử dụng get-process, hãy cân nhắc sử dụng 'powershell *' thay vì chỉ powershell, trong trường hợp bạn đang sử dụng powershell_ise. HTH
Marcelo Finki

Đã thay đổi câu trả lời từ việc sử dụng .Source thành .Definition.
Nathan Hartley

12

Nó luôn là C: \ Windows \ System32 \ WindowsPowershell \ v1.0. Nó được để như vậy cho khả năng tương thích ngược là những gì tôi đã nghe hoặc đọc ở đâu đó.


2
% SystemRoot% \ system32 \ WindowsPowerShell \ v1.0 \ powershell.exe. Trong trường hợp SystemRoot không phải là "C: \ Windows"
Matthew
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.