Versi Kerangka Kerja Manajemen Windows apa yang diinstal?

16

Bagaimana Anda memeriksa untuk melihat versi Windows Management Framework (WMF) apa yang diinstal? Sepertinya itu harus menjadi hal yang sederhana untuk mengetahuinya, tetapi aku tidak bisa. Bahkan Googling sekelompok versi yang berbeda dari pertanyaan itu ternyata tidak ada artinya.

Itu tidak ada di appwiz.cpl, dan regedit tidak menemukan apa pun untuk "Kerangka Manajemen Windows" dan ia menemukan terlalu banyak hal-hal asing untuk "wmf"

Saya hanya ingin tahu bagaimana memeriksanya sama sekali, dengan cara apa pun yang masuk akal. Apakah ada kunci registri untuk itu? Apakah ada file yang bisa saya periksa? Apa pun???

Hal terdekat yang bisa saya temukan ada di serverfault: Metode untuk Mendeteksi versi Kerangka Manajemen Windows . Pertanyaan itu dimulai dari hal yang sama, tetapi tampaknya meminta cara pemeriksaan khusus untuk digunakan dalam GPO; mungkin itu sebabnya tidak mendapat jawaban.

Ada beberapa komputer yang ingin saya periksa. Yang saya mulai adalah Windows Server 2008 R2 Standard. Akan ada sistem operasi Windows Server lainnya juga.

Jika Anda mengetahui adanya tag yang berfungsi lebih baik dari yang saya miliki, beri komentar atau retag; Saya tidak dapat menemukan apa pun yang menggambarkan pertanyaan ini dengan baik.


Pembaruan: Beberapa orang tampaknya berpikir bahwa " $PSVersionTable" (dan / atau berbagai properti itu) adalah jawaban. Saya akhirnya menyadari baru-baru ini bahwa ini adalah variabel PowerShell (mungkin awalan 'PS' seharusnya memberikannya untuk saya, tetapi tidak) dan mencoba menggali lebih dalam. Ini menghasilkan pertanyaan lain: Apa isi dari $ PSVersionTable PowerShell mewakili? .

Update2: Berdasarkan pada semua informasi yang saya kumpulkan sekarang dan pemahaman saya yang lebih baik, saya cukup yakin bahwa variabel bawaan PowerShell $PSVersionTable.PSVersionbukanlah jawaban untuk hal ini secara teknis, tetapi sering kali (kadang-kadang? Selalu? Tidak yakin) the sama, seperti dalam versi mungkin berjalan seiring. The $PSVersionTable.WSManStackVersionvariabel mungkin apa yang saya inginkan, tapi deskripsi singkat resmi yang menunjukkan properti sebagai mewakili tumpukan WS-Manajemen. Apakah tumpukan WS-Management sama dengan WMF? Googling menyarankan mereka terkait erat, tetapi saya tidak yakin apakah jawabannya ya.

Loduwijk
sumber
1
Kemungkinan penipuan: serverfault.com/questions/555100/… Jawaban ada di komentar meskipun belum ada jawaban yang diterima.
Wesley
@Wesley Saya sudah memberikan tautan ke pertanyaan itu dan menyebutkannya. Jawabannya tidak ada di komentar. "Apakah kamu bertanya bagaimana menjalankan sesuatu seperti $PSVersionTable.PSVersiontetapi menggunakan WMI?" bukan jawaban. Apa artinya itu? Jika Anda dapat mengambil komentar itu dan mengubahnya menjadi jawaban yang sebenarnya dapat digunakan, saya akan sangat menghargainya. Apakah ini $PSVersionTable.PSVersionvariabel dari beberapa jenis yang tersedia di suatu tempat? Jika ya, apakah dijamin versi WMF? Saya mencoba echo $PSVersionTable.PSVersiondan mendapatkan hasil$PSVersionTable.PSVersion
Loduwijk
Juga, hal yang sama berlaku untuk komentar serupa dari pertanyaan itu.
Loduwijk
1
Anda mungkin downvoted karena mengatakan Anda berlari echo $PSVersionTable.PSVersiondan mendapatkan hasil $PSVersionTable.PSVersion- apa yang Anda bingung dalam komentar / jawaban saya pada pertanyaan lain?
TheCleaner
1
Mengatakan "Saya melakukan ini dan mendapatkan hasil ini" seharusnya tidak pernah menghasilkan downvote. Itu menyiratkan bahwa Anda downvoting karena Anda pikir orang itu bodoh. Itu hanya contoh dari satu cara di mana saya mencoba untuk memanfaatkan "jawaban" yang seharusnya. Komentar dengan variabel itu memberikan beberapa data tetapi tidak ada cara yang berguna untuk menggunakannya. Saya tidak tahu bahwa itu adalah variabel di PowerShell, dan tidak ada yang mengatakan itu - hal yang paling dekat adalah bahwa beberapa orang menyebutkan memeriksa versi PowerShell juga, yang merupakan sesuatu yang tidak saya cari.
Loduwijk

Jawaban:

9

Lihat dokumentasi ini dari Microsoft:

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

Di bagian "Memutakhirkan Windows Powershell yang ada", ia mengatakan secara khusus:

Paket instalasi untuk PowerShell hadir di dalam pemasang WMF. Versi penginstal WMF cocok dengan versi PowerShell ; tidak ada penginstal yang berdiri sendiri untuk Windows PowerShell.

Saya kira inilah jawabannya kawan. Jalankan $PSVersionTable.PSVersionuntuk mendapatkan versi.

DoodlingDBA
sumber
Akhirnya, jawaban yang pasti dan resmi dari Microsoft. Terima kasih. Diterima dan +1.
Loduwijk
10

Saya tahu ini adalah pertanyaan lama, tetapi untuk orang lain yang menemukan ini dari Google Penelusuran:

Saya ingin berargumen bahwa itu $PSVersionTable.PSVersionadalah indikator yang paling dapat diandalkan dari versi WMF. Lihat contoh di bawah ini.

Instalasi baru Windows 7:

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 setelah instalasi .NET 4.5 dan 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 setelah instalasi 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, yang menyertakan WMF 5 di luar kotak:

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

Jadi seperti yang Anda lihat, versi untuk $PSVersionTable.WSManStackVersion.Majorhanya tampaknya berubah pada instalasi WMF 4 dan kemudian tetap pada 3. Sementara $PSVersionTable.PSVersion.Majortampaknya melaporkan versi akurat dari WMF.

Mike
sumber
Saya akan memberi tahu Anda apa indikator yang paling dapat diandalkan. Temukan WMF default untuk setiap versi Windows, dan nomor KB apa yang digunakan untuk setiap Kerangka Manajemen Windows, dan kemudian periksa versi / KB tersebut dan lakukan pernyataan kasus besar. Maksudku, mungkin PSVersion sudah cukup baik, tetapi seperti yang telah ditunjukkan, kita tidak tahu itu. Atau, setidaknya, saya tidak tahu itu. Tetapi saya dapat memberi tahu Anda dengan pasti jika Anda memiliki KB dan versi OS, Anda akan tahu WMF apa yang telah diinstal. (Namun, mundur selangkah, saya ingin tahu mengapa orang perlu tahu versi WMF dan PSVersion tidak akan cukup.)
Todd Walton
Ini harus menjadi jawaban yang diterima. Meskipun menemukan semua KB akan memungkinkan jawaban yang lengkap, jawaban ini adalah pendekatan yang masuk akal yang dapat saya konfirmasikan pada setidaknya satu versi Windows (2012 R2).
RichVel
@ToddWalton Saya tidak ingat secara spesifik tentang mengapa saya membutuhkan versi WMF pada waktu itu. Yang saya ingat adalah bahwa sesuatu yang saya lakukan memiliki prasyarat untuk menginstal WMF versi tertentu, dan itu bukan PowerShell. Saya tidak ingat apa itu, jadi mungkin itu adalah sesuatu yang menggunakan PowerShell. Saya bahkan belum berada di pekerjaan itu selama sekitar 2 tahun sekarang, jadi ingatan saya tentang tugas itu adalah keju swiss.
Loduwijk
@RichVel Anda benar, jawaban itu seharusnya sudah diterima. Tidak yakin mengapa saya tidak pernah mengganti tanda centang ke tanda centang itu. Namun, pada titik ini, jawaban yang benar-benar pasti dan otoritatif telah diberikan baru-baru ini, jadi saya menerima jawaban itu. Maaf untuk Mike bahwa jawabannya tidak diperiksa untuk tahun lalu.
Loduwijk
3

Di PowerShell tersedia dari $PSVersionTable.WSManStackVersion.Major

Sistem Windows 7 rumah saya:

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>

Kemudian setelah menginstal Kerangka Manajemen Windows yang lebih baru:

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>
Brian
sumber
1
Saya percaya ini tidak benar. Saya baru saja menginstal WMF 5.1 pada sistem Windows Server 2012 R2, yang WSManStackVersionawalnya 3.0, dan tetap di 3.0. Saya pikir panduan terbaik adalah dua komponen pertama PSVersionyang akan sama dengan versi WMF.
RichVel
0

Jika sudah diinstal, Anda akan menemukannya di "appwiz.cpl". Ingatlah untuk melihat di bawah "Lihat pembaruan yang diinstal", karena WMF didistribusikan sebagai pembaruan Windows dengan nomor KB unik untuk berbagai versi Windows.

WMF 3.0 diinstal pada Windows 7 SP 1

Håvid Falch
sumber
0

Anda memeriksa untuk melihat apa versi Windows Management Framework (WMF) yang diinstal dengan mengidentifikasi nomor KB dari versi yang Anda periksa dan kemudian menggunakan, dalam hal ini, permintaan wmic, untuk menentukan apakah nomor KB telah diinstal. Semua contoh ini didasarkan pada penggunaan cmd.exe untuk menjalankan perintah.

** Perintah untuk Memeriksa WMF 4.0

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

** Contoh menjalankan perintah:

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

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

Dalam contoh di atas, WMF 4.0 diinstal: KB dikembalikan dari kueri wmic dan kode pengembalian nol.

** Perintah untuk Memeriksa WMF 5.0

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

** Contoh menjalankan perintah:

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

Jadi dalam contoh di atas WMF 5.0 tidak diinstal: tidak ada yang dikembalikan dari kueri wmic dan kode pengembalian non-nol.

Mungkin saja Anda menggunakan KB yang berbeda untuk menginstal level WMF tertentu, tetapi inilah yang sedang saya kerjakan saat ini.

Dan saya selalu memeriksa PowerShell (yang diinstal atau ditingkatkan sebagai bagian dari WMF):

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

Ada masalah ketika memutakhirkan ke WMF 4.0 (dan sekali lagi nanti ke 5.0) jika .NET 4.5 tidak diinstal jadi jika perintah PS menghasilkan kesalahan, Anda mungkin harus menginstal .NET 4.5.

Stef
sumber