I always open up PowerShell on $randomcomputer
and type Get-WindowsFeature
expecting to get a list of Windows features. Sometimes it doesn’t work and then I Google on why that’s the case, forgetting that I’ve been down this route umpteen times. So here’s a post for myself.
The *-WindowsFeature
cmdlets are available via the Server Manager module which in turn is either present by default (on servers) or installed via the Remote Server Admin Tools (on clients).
- Windows Server 2012: Modules are loaded automatically on demand so the
*-WindowsFeature
cmdlets are available without any additional steps. - Windows Server 2008 R2: Import the Server Manager module and then the
*-WindowsFeature
cmdlets can be used. - Windows 8: Install the Server Manager via RSAT. This makes the Server Manager module available for automatic loading and then the
*-WindowsFeature
cmdlets can be used. Windows 8 also provides(Get|Enable|Disable)-WindowsOptionalFeature
cmdlets as part of the DISM module (which is present by default). These provide similar functionality to the*-WindowsFeature
cmdlets (doesn’t work on remote computers though!). Add the-Online
when using these cmdlets as they can work with the running instance or a mounted Windows image. - Windows 7: Installing the Server Manager via RSAT doesn’t help. It doesn’t include the Server Manager module and so the
*-WindowsFeature
cmdlets are not available. An alternative is to install the 3rd party Client Manager module which gives the*-ClientFeature
cmdlets.