2017-11-08 41 views
5

Tóm tắtSự khác nhau giữa 'PowerShellVersion` và' PowerShellHostVersion`

Có gì chênh lệch giữa PowerShell Mô-đun Manifest giá trị PowerShellVersionPowerShellHostVersion?

dài Version

Khi tạo một module mới Manifest có cài đặt cho cả hai phiên bản tối thiểu của PowerShell theo yêu cầu của mô-đun này, và cũng là phiên bản tối thiểu của Host PowerShell yêu cầu. ví dụ:

New-ModuleManifest -Path '.\MyModule.psd1' -PowerShellVersion '5.0' -PowerShellHostVersion '2.0'

PowerShellVersion liên quan đến $PSVersionTable.PSVersion.Major (NB: liên quan đến phiên bản chính từ giá trị hợp lệ đều có 0 bộ cho phiên bản nhỏ/không xây dựng của họ hoặc số sửa đổi).

PowerShellHostVersion là hình tôi chưa rõ. Niềm tin của tôi là điều này liên quan đến $Host.Version (ví dụ: với PowerShellHostName liên quan đến $Host.Name). Tuy nhiên, theo kinh nghiệm của tôi, cả hai ISE (Windows PowerShell ISE Host) và ConsoleHost đều có số phiên bản của chúng trong dòng với phiên bản PS; do đó, nó có vẻ kỳ lạ để yêu cầu rằng chúng được ra khỏi đồng bộ với các phiên bản PS như ngụ ý trong ví dụ. Hy vọng của tôi là những thông số này hiếm khi được sử dụng cho các trường hợp sử dụng hiếm; nhưng tôi muốn đảm bảo rằng tôi đã hiểu chính xác điều này là gì, và nếu có một kịch bản chung mà chúng có thể áp dụng.

Ví dụ giá trị trong MSDN's documentation khác nhau (ví dụ: PowershellVersion được đưa ra 5.0, trong khi PowershellHostVersion được 2.0)

Các Official Documentation chỉ đưa ra một mô tả hình tròn (ví dụ: không có thêm nhiều thông tin hơn tên tham số tự nó bao hàm).

+2

Kể từ PowerShell 5.1, máy chủ từ xa PowerShell có phiên bản 1.0. – PetSerAl

+1

Nhận xét của @ PetSerAI: được sao chép bằng cách chạy: 'Enter-PSSession -ComputerName .'' $ Host.Version'. Tên máy chủ lưu trữ là 'ServerRemoteHost'. '$ PSVersionTable' vẫn cho' 5.1.14409.1012', như mong đợi. – JohnLBevan

+0

Chạy máy chủ 'findstr/I/S/R '. * Máy chủ phiên bản * Tên" * .psd1' (từ dấu kiểm nhắc lệnh nâng cao) trong cả 'pushd"% psmodulepath% "' và 'for/F" delims = " % G trong ('where powershell.exe') làm pushd "% ~ dpG" 'thư mục. Tôi không thể tìm thấy bất kỳ hình thức 'PowerShellHostVersion' hữu ích nào. Vì vậy, ** tại sao ** bạn muốn thiết lập nó trong mô-đun của bạn? – JosefZ

Trả lời

0

My belief is that this relates to $Host.Version

Niềm tin của bạn là chính xác. Thử nghiệm điều này bằng cách sửa đổi tệp kê khai được tạo để đặt giá trị PowerShellHostVersion thành 6.0. Khi nhập khẩu, nhận được lỗi:

Import-Module : The current Windows PowerShell host is: 'ConsoleHost' (version 
5.1.15063.674). The module 'C:\MyModule.psd1' requires a minimum Windows PowerShell 
host version of '6.0' to run. 
At line:1 char:1 
+ Import-Module .\MyModule.psd1 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : ResourceUnavailable: (C:\MyModule.psd1:String) [Import-M 
    odule], InvalidOperationException 
    + FullyQualifiedErrorId : Modules_InsufficientPowerShellHostVersion,Microsoft.PowerShel 
    l.Commands.ImportModuleCommand 

Version liên quan đến $Host.Version, và tên liên quan đến $Host.Name

PS C:\> $Host.Version 

Major Minor Build Revision 
----- ----- ----- -------- 
5  1  15063 674 

This Shavy Levy blog post và liên kết PowerShell Team follow up từ năm 2010 đưa ra một lịch sử thú vị. Trên máy của tôi, tôi nhận được kết quả tương tự cho $Host.Version từ các máy chủ Console và ISE.
Không có đầu mối nào Power GUI và các máy chủ được đề cập khác sử dụng phiên bản nào.

Các vấn đề liên quan