Phiên bản nào của Windows Management Framework được cài đặt?


16

Làm thế nào để bạn kiểm tra xem phiên bản Windows Management Framework (WMF) nào được cài đặt? Có vẻ như đó là một điều đơn giản để tìm hiểu, nhưng tôi không thể. Ngay cả việc Googling một loạt các phiên bản khác nhau của câu hỏi cũng biến thành rất ít.

Nó không có trong appwiz.cpl và regedit không tìm thấy bất cứ điều gì cho "Khung quản lý Windows" và nó tìm thấy quá nhiều thứ không liên quan đến "wmf"

Tôi chỉ muốn biết làm thế nào để kiểm tra nó, theo bất kỳ cách hợp lý. Có một khóa đăng ký cho nó? Có một tập tin tôi có thể kiểm tra? Có gì không ???

Điều gần nhất tôi có thể tìm thấy là ở đây trên serverfault: Phương thức phát hiện phiên bản Windows Management Framework . Câu hỏi đó bắt đầu giống nhau, nhưng dường như nó yêu cầu một cách kiểm tra cụ thể được sử dụng trong GPO; có lẽ đó là lý do tại sao nó không có câu trả lời.

Có nhiều máy tính tôi muốn kiểm tra cái này. Phiên bản tôi bắt đầu là Windows Server 2008 R2 Standard. Cũng sẽ có các hệ điều hành Windows Server khác.

Nếu bạn biết bất kỳ thẻ nào hoạt động tốt hơn những gì tôi có, vui lòng bình luận hoặc thử lại; Tôi không thể tìm thấy bất cứ điều gì mô tả câu hỏi này tốt.


Cập nhật: Một số người dường như nghĩ rằng " $PSVersionTable" (và / hoặc các thuộc tính khác nhau của nó) là một câu trả lời. Cuối cùng tôi đã nhận ra rằng đây là một biến PowerShell (có thể là tiền tố 'PS' nên đã mang nó đi cho tôi, nhưng nó đã không) và cố gắng đào sâu hơn. Điều này dẫn đến một câu hỏi khác: Nội dung của $ PSVersionTable của PowerShell thể hiện điều gì? .

Update2: Dựa trên tất cả thông tin tôi đã thu thập bây giờ và hiểu rõ hơn, tôi khá chắc chắn rằng biến tích hợp của PowerShell $PSVersionTable.PSVersionkhông phải là câu trả lời về mặt kỹ thuật, nhưng nó thường (đôi khi? Luôn luôn không chắc chắn) tương tự, như trong các phiên bản có thể đi đôi với nhau. Các $PSVersionTable.WSManStackVersionbiến có thể là những gì tôi muốn, nhưng mô tả ngắn chính thức của chương trình mà sở hữu nó như là đại diện cho chồng WS-Management. WS-Management stack có giống với WMF không? Googling đề nghị họ có liên quan chặt chẽ với nhau, nhưng tôi không chắc câu trả lời cho điều đó có đúng không.


1
Bản sao có thể có của: serverfault.com/questions/555100/ Câu trả lời có trong các bình luận mặc dù chưa có câu trả lời được chấp nhận.
Wesley

@Wesley Tôi đã cung cấp một liên kết đến câu hỏi đó và đề cập đến nó. Câu trả lời không có trong các bình luận. "Bạn đang hỏi làm thế nào để chạy một cái gì đó như $PSVersionTable.PSVersionnhưng sử dụng WMI?" không phải là một câu trả lời. Điều đó có nghĩa là gì? Nếu bạn có thể nhận xét đó và biến nó thành một câu trả lời thực sự có thể sử dụng được, tôi sẽ đánh giá cao nó. Đây có phải là $PSVersionTable.PSVersionmột biến của một số loại có sẵn ở đâu đó? Nếu có, nó có được đảm bảo là phiên bản WMF không? Tôi đã thử echo $PSVersionTable.PSVersionvà nhận được kết quả đầu ra$PSVersionTable.PSVersion
Loduwijk

Ngoài ra, các ý kiến ​​tương tự của câu hỏi đó cũng vậy.
Loduwijk

1
Bạn có thể đã bị hạ thấp khi nói rằng bạn đã chạy echo $PSVersionTable.PSVersionvà có đầu ra $PSVersionTable.PSVersion- bạn bối rối trong nhận xét / câu trả lời của tôi về câu hỏi khác là gì?
TheCleaner

1
Nói rằng "Tôi đã làm điều này và nhận được kết quả này" sẽ không bao giờ tạo ra một downvote. Điều đó ẩn ý rằng bạn đang hạ thấp vì bạn nghĩ rằng người đó là ngu ngốc. Đó chỉ là một ví dụ về một cách mà tôi đang cố gắng sử dụng "câu trả lời". Các ý kiến ​​với biến đó đã đưa ra một số dữ liệu nhưng không có cách nào hữu ích để sử dụng nó. Tôi không biết rằng đó là một biến trong PowerShell và không ai nói rằng đó là - điều gần nhất là một vài người đã đề cập đến việc kiểm tra phiên bản PowerShell, đó là điều mà tôi không tìm kiếm.
Loduwijk

Câu trả lời:


9

Xem tài liệu này từ Microsoft:

https://docs.microsoft.com/en-us/powershell/scripting/setup/installing-windows-powershell?view=powershell-5.1

Trong phần "Nâng cấp Windows Powershell hiện tại", nó nói cụ thể:

Gói cài đặt cho PowerShell có trong trình cài đặt WMF. Phiên bản trình cài đặt WMF phù hợp với phiên bản PowerShell ; không có trình cài đặt độc lập cho Windows PowerShell.

Tôi nghĩ rằng đây là câu trả lời kẻ. Chạy $PSVersionTable.PSVersionđể lấy phiên bản.


Cuối cùng, một câu trả lời dứt khoát, có thẩm quyền trực tiếp từ Microsoft. Cảm ơn bạn. Được chấp nhận và +1.
Loduwijk

10

Tôi biết đây là một câu hỏi cũ, nhưng đối với những người khác tìm thấy câu hỏi này từ Tìm kiếm của Google:

Tôi muốn tranh luận rằng đó $PSVersionTable.PSVersionlà chỉ số đáng tin cậy nhất của phiên bản WMF. Xem ví dụ dưới đây.

Cài đặt Windows 7 mới:

Name                           Value
----                           -----
PSVersion                      2.0
WSManStackVersion              2.0
CLRVersion                     2.0.50727.5420
BuildVersion                   6.1.7601.17514
PSCompatibleVersions           {1.0, 2.0}
SerializationVersion           1.1.0.1
PSRemotingProtocolVersion      2.1

Windows 7 sau khi cài đặt .NET 4.5 và WMF 4:

Name                           Value
----                           -----
PSVersion                      4.0
WSManStackVersion              3.0
SerializationVersion           1.1.0.1
CLRVersion                     4.0.30319.18408
BuildVersion                   6.3.9600.16406
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0}
PSRemotingProtocolVersion      2.2

Windows 7 sau khi cài đặt WMF 5:

Name                           Value
----                           -----
PSVersion                      5.0.10586.117
WSManStackVersion              3.0
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.10586.117
CLRVersion                     4.0.30319.18408
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

Windows 10, bao gồm WMF 5 ngoài hộp:

Name                           Value
----                           -----
PSVersion                      5.0.10586.122
WSManStackVersion              3.0
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.10586.122
CLRVersion                     4.0.30319.42000
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

Vì vậy, như bạn có thể thấy, phiên bản $PSVersionTable.WSManStackVersion.Majordường như chỉ thay đổi khi cài đặt WMF 4 và sau đó giữ ở mức 3. Trong khi $PSVersionTable.PSVersion.Majordường như báo cáo phiên bản chính xác của WMF.


Tôi sẽ cho bạn biết chỉ số đáng tin cậy nhất sẽ là gì. Tìm WMF mặc định cho từng phiên bản Windows và số KB nào được sử dụng cho từng Khung quản lý Windows, sau đó kiểm tra các phiên bản / KB đó và thực hiện một tuyên bố trường hợp lớn. Ý tôi là, có lẽ PSVersion là đủ tốt, nhưng như đã được chỉ ra, chúng tôi không biết điều đó. Hoặc, ít nhất, tôi không biết điều đó. Nhưng tôi có thể nói với bạn chắc chắn nếu bạn có KB và phiên bản HĐH, bạn sẽ biết WMF đã được cài đặt những gì. (Tuy nhiên, lùi lại một bước, tôi tò mò về lý do tại sao một người cần biết phiên bản WMF và PSVersion sẽ không đủ.)
Todd Walton

Đây phải là câu trả lời được chấp nhận. Mặc dù việc tìm tất cả các KB sẽ cho phép một câu trả lời thấu đáo, câu trả lời này là một cách tiếp cận hợp lý mà tôi có thể xác nhận trên ít nhất một phiên bản Windows (2012 R2).
RichVel

@ToddWalton Tôi không nhớ chi tiết cụ thể về lý do tại sao tôi cần phiên bản WMF tại thời điểm đó. Tất cả những gì tôi nhớ là một cái gì đó tôi đang làm có một điều kiện tiên quyết là một phiên bản cụ thể của WMF đã được cài đặt và nó không phải là PowerShell. Tôi không nhớ đó là gì, nên có lẽ đó là thứ đã sử dụng PowerShell. Tôi thậm chí đã không làm công việc đó được khoảng 2 năm rồi, vì vậy trí nhớ của tôi về nhiệm vụ đó là phô mai.
Loduwijk

@RichVel Bạn đã đúng, câu trả lời đó đáng lẽ phải được chấp nhận. Không chắc chắn tại sao tôi không bao giờ chuyển dấu kiểm sang cái đó. Tuy nhiên, tại thời điểm này, một câu trả lời thực sự dứt khoát, có thẩm quyền đã được cung cấp gần đây, vì vậy tôi đã chấp nhận câu trả lời đó thay vào đó. Xin lỗi Mike vì câu trả lời của anh ấy đã không được kiểm tra trong năm ngoái.
Loduwijk

3

Trong PowerShell, nó có sẵn từ $PSVersionTable.WSManStackVersion.Major

Hệ thống Windows 7 nhà tôi:

PS C:\Users\Brian> $PSVersionTable

Name                           Value
----                           -----
CLRVersion                     2.0.50727.5485
BuildVersion                   6.1.7601.17514
PSVersion                      2.0
WSManStackVersion              2.0
PSCompatibleVersions           {1.0, 2.0}
SerializationVersion           1.1.0.1
PSRemotingProtocolVersion      2.1


PS C:\Users\Brian> $PSVersionTable.WSManStackVersion.Major
2
PS C:\Users\Brian>

Sau đó, sau khi cài đặt Khung quản lý Windows mới hơn:

PS C:\Users\Brian> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      4.0
WSManStackVersion              3.0
SerializationVersion           1.1.0.1
CLRVersion                     4.0.30319.34209
BuildVersion                   6.3.9600.16406
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0}
PSRemotingProtocolVersion      2.2


PS C:\Users\Brian>

1
Tôi tin rằng điều này là không chính xác. Tôi mới cài đặt WMF 5.1 trên hệ thống Windows Server 2012 R2, trên đó WSManStackVersionban đầu là 3.0 và nó vẫn ở mức 3.0. Tôi nghĩ rằng hướng dẫn tốt nhất là hai thành phần đầu tiên PSVersionsẽ giống với phiên bản WMF.
RichVel

0

Nếu nó được cài đặt, bạn sẽ tìm thấy nó trong "appwiz.cpl". Chỉ cần nhớ xem trong "Xem các bản cập nhật đã cài đặt", vì WMF được phân phối dưới dạng bản cập nhật Windows với các số KB duy nhất cho các phiên bản Windows khác nhau.

WMF 3.0 được cài đặt trong Windows 7 SP 1


0

Bạn kiểm tra xem phiên bản Windows Management Framework (WMF) nào được cài đặt bằng cách xác định số KB của phiên bản bạn đang kiểm tra và sau đó sử dụng truy vấn wmic để xác định xem số KB đó đã được cài đặt chưa. Các ví dụ này đều dựa trên việc sử dụng cmd.exe để chạy các lệnh.

** Các lệnh để kiểm tra WMF 4.0

wmic qfe get hotfixid | find "KB2819745"
echo %ERRORLEVEL%

** Ví dụ về việc chạy các lệnh:

C:\Program Files\Tivoli\TSM\baclient> wmic qfe get hotfixid | find "KB2819745"
KB2819745

C:\Program Files\Tivoli\TSM\baclient> echo %ERRORLEVEL%
0

Trong ví dụ trên WMF 4.0 được cài đặt: KB được trả về từ truy vấn wmic và mã trả về 0.

** Các lệnh để kiểm tra WMF 5.0

wmic qfe get hotfixid | find "KB3134760"
echo %ERRORLEVEL%

** Ví dụ về việc chạy các lệnh:

C:\Program Files\Tivoli\TSM\baclient> wmic qfe get hotfixid | find "KB3134760"
C:\Program Files\Tivoli\TSM\baclient> echo %ERRORLEVEL%
1

Vì vậy, trong ví dụ trên WMF 5.0 không được cài đặt: không có gì được trả về từ truy vấn wmic và mã trả về khác không.

Có thể bạn đã sử dụng KB khác nhau để cài đặt một mức WMF nhất định nhưng đây là những gì tôi đang làm việc với hiện tại.

Và tôi luôn kiểm tra PowerShell (được cài đặt hoặc nâng cấp như một phần của WMF):

powershell.exe -NoLogo -Sta -NoProfile -NonInteractive -Command "Write-Host $PSVersionTable.PSVersion"
echo %ERRORLEVEL%

Có vấn đề khi nâng cấp lên WMF 4.0 (và một lần nữa sau đó lên 5.0) nếu .NET 4.5 không được cài đặt, vì vậy nếu lệnh PS xuất ra lỗi, có lẽ bạn nên cài đặt .NET 4.5.

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.