When the WMF5.0 was republished, I’ve asked the following question in the comments
Can you please explain why WMF 4.0 is a prerequisite on Windows Server 2008 R2 and Windows 7 SP1? Is it related to the WMI repository and/or to DSC?
Krishna C Vutukuri from the Windows PowerShell Team replied
As you may know, WMF 5 uses CBS based technology for installation. Win 7 SP1/W2K8R2 systems contain PowerShell 2.0, WinRM, WMI by default. After Win7/W2K8 R2 released, we shipped WMF 3.0 and WMF 4.0 which contain updates to these features. Installing / Uninstalling these packages uncovered some issues in the upgrade options from inbox -> WMF4 and inbox->WMF3->WMF4. We fixed all those issues in WMF4. Hence we had to make WMF4 as requirement for installing WMF5 on Win7 SP1/W2K8 R2. Here are the specific issues you might face if you do not install WMF4 before upgrading to WMF5:
(a) Forwarded Events log is unavailable and EventCollector log is not displayed in Event Viewer after you uninstall in Windows 7 SP1 and in Windows Server 2008 R2 SP1
(b) Issues with PSModulePath environment when you upgrade directly from inbox to WMF5 or from WMF 3 to WMF5.
Again WMF4 addresses these issues and our internal testing environment uses this matrix for testing WMF5 on Win7 SP1/W2K8R2 SP1.
Windows PowerShell Team
The other person interested in the upgrade path to WMF 5.0 on Windows 7 asked about
To summarize: Windows 7 SP1 is shipped with PowerShell 2.0 and .Net 3.5 SP1 and to upgrade it to PowerShell 5.0, you’ve to:
- fullfil the .Net 4.x requirement
- update to WMF 4.0
- update to WMF 5.0
Ok, .Net 4.5.2 or .Net 4.6.x and WMF 5.0 can deployed from Microsoft Update but how to deploy WMF 4.0?
I’m not the only one who noticed this shortcoming. Bjorn Houben says on his blog:
One of the disadvantages however is that for operating systems before Windows 8.1/2012, a prerequisite is that WMF4 is installed, which cannot easily be deployed using WSUS unfortunately.
Martin Schvartzman @MSFT discussed how to deploy WMF 4.0 on this page.
Although I’ve got ConfigMgr in my environment, I wanted to find a solution
- that doesn’t have any dependency (except Internet connectivity),
- that would deploy .Net 4.5.2 if missing but that wouldn’t fail if it has .Net 4.6 or 4.6.1,
- that would minimize the number of restarts required,
- that will install the required components silently and not force a restart
My code somehow illustrates the concept of immutable infrastructure that Jeffrey Snover talked about in a recent video.
[…] All your infrastructure is the result of a base set of components and an algorithm to produce a result. If you don’t like the result or ever need to make a change, you never change the instance, you go back, change the recipe, re-run it to produce the instance. […]
My code is a recipe to ease the pain of getting Windows 7 from its built-in PowerShell 2.0 to WMF 5.0.
It’ll drive you through the following different stages:
Here’s the code (gone through the PSScriptAnalyzer module that only flagged it for using the Get-WmiObject cmdlet)
No doubt that PowerShell rocks and that it’s a key component to immutable infrastructure 😎