Podobnie jak ma to miejsce na systemach serwerowych, na których możemy sprawdzić bieżący stan i zainstalować z poziomu powłoki Windows PowerShell wszystkie role serwera oraz ich usługi i funkcje, również wydania klienckie Windows oferują nam wygodne polecenia powłoki PowerShell umożliwiające szybkie sprawdzenie i włączenie poszczególnych składników systemu. O ile w przypadku Windows Servera skorzystalibyśmy z polecenia Get-WindowsFeature, o tyle systemy klienckie pozbawione są tej komendy i oferują nam polecenie zastępcze o nazwie Get-WindowsOptionalFeature.
Zobaczmy zatem, jak w prosty sposób dowiedzieć się, które ze składników systemu Windows są aktualnie włączone, rozpatrując przy tym różne metody formatowania wyników.
Aby wylistować wszystkie dostępne w systemie składniki korzystamy z tego polecenia z jednym obowiązkowym parametrem, wskazującym czy chcemy odnieść się do działającego lokalnie systemu (parametr -Online), czy też do zachowanego obrazu WIM innej instancji Windows (parametr -Path):
PS C:\Windows\system32> Get-WindowsOptionalFeature -Online Feature Name : Microsoft-Hyper-V-All State : Enabled Feature Name : Microsoft-Hyper-V-Tools-All State : Enabled Feature Name : Microsoft-Hyper-V State : Enabled Feature Name : Microsoft-Hyper-V-Management-Clients State : Enabled Feature Name : Microsoft-Hyper-V-Management-PowerShell State : Enabled Feature Name : Printing-Foundation-Features State : Enabled Feature Name : Printing-Foundation-LPRPortMonitor State : Disabled Feature Name : Printing-Foundation-LPDPrintService State : Disabled Feature Name : Printing-Foundation-InternetPrinting-Client State : Enabled Feature Name : FaxServicesClientPackage State : Enabled Feature Name : ScanManagementConsole State : Disabled Feature Name : LegacyComponents State : Enabled Feature Name : DirectPlay State : Enabled Feature Name : SimpleTCP State : Disabled ...
Po wykonaniu powyższego polecenia cmdlet otrzymamy pełny wykaz poszczególnych składników systemu Windows wraz z ich bieżącym stanem - włączony lub wyłączony.
Jeśli interesują nas jedynie te składniki, które zostały włączone, możemy otrzymane wyniki przepuścić przez dodatkowy filtr, jak w przykładzie poniżej:
PS C:\Windows\system32> Get-WindowsOptionalFeature -Online | Where-Object State -eq "Enabled" Feature Name : Microsoft-Hyper-V-All State : Enabled Feature Name : Microsoft-Hyper-V-Tools-All State : Enabled Feature Name : Microsoft-Hyper-V State : Enabled Feature Name : Microsoft-Hyper-V-Management-Clients State : Enabled Feature Name : Microsoft-Hyper-V-Management-PowerShell State : Enabled Feature Name : Printing-Foundation-Features State : Enabled Feature Name : Printing-Foundation-InternetPrinting-Client State : Enabled Feature Name : FaxServicesClientPackage State : Enabled Feature Name : LegacyComponents State : Enabled Feature Name : DirectPlay State : Enabled ...
Z kolei korzystając ze stanów "Disabled" lub "EnablePending" w podobny sposób możemy wylistować sobie składniki, które są aktualnie wyłączone, lub po włączeniu których wymagany jest restart systemu (przykładem takiego składnika może być chociażby kliencka funkcja Hyper-V, której składnik Microsoft-Hyper-V do momentu ponownego uruchomienia komputera będzie miał po jej włączeniu status EnablePending).
Jak nie trudno zauważyć, tworzona w ten sposób lista jest dosyć długa, dlatego warto sobie otrzymane wyniki przeformatować do postaci bardziej czytelnej tabeli, jak to zrobiliśmy w poniższym przykładzie:
PS C:\Windows\system32> Get-WindowsOptionalFeature -Online | Where-Object State -eq "Enabled" | Format-Table FeatureName State ----------- ----- Microsoft-Hyper-V-All Enabled Microsoft-Hyper-V-Tools-All Enabled Microsoft-Hyper-V Enabled Microsoft-Hyper-V-Management-Clients Enabled Microsoft-Hyper-V-Management-PowerShell Enabled Printing-Foundation-Features Enabled Printing-Foundation-InternetPrinting-Client Enabled FaxServicesClientPackage Enabled LegacyComponents Enabled DirectPlay Enabled Windows-Defender-Default-Definitions Enabled MicrosoftWindowsPowerShellV2Root Enabled MicrosoftWindowsPowerShellV2 Enabled Internet-Explorer-Optional-amd64 Enabled NetFx3 Enabled WCF-Services45 Enabled WCF-TCP-PortSharing45 Enabled NetFx4-AdvSrvs Enabled MediaPlayback Enabled WindowsMediaPlayer Enabled Microsoft-Windows-MobilePC-LocationProvider-INF Enabled Printing-XPSServices-Features Enabled MSRDC-Infrastructure Enabled SearchEngine-Client-Package Enabled Xps-Foundation-Xps-Viewer Enabled WorkFolders-Client Enabled SMB1Protocol Enabled
Idąc dalej tym tropem, skoro jawnie żądamy wyświetlenia tylko i wyłącznie składników włączonych, możemy śmiało ograniczyć prezentowane wyniki jedynie do nazw rozważanych pakietów, pomijając przy tym wszelkie dodatkowe informacje:
PS C:\Windows\system32> Get-WindowsOptionalFeature -Online | Where-Object State -eq "Enabled" | Format-Wide Microsoft-Hyper-V-All Microsoft-Hyper-V-Tools-All Microsoft-Hyper-V Microsoft-Hyper-V-Management-Clients Microsoft-Hyper-V-Management-PowerShell Printing-Foundation-Features Printing-Foundation-InternetPrinting-Client FaxServicesClientPackage LegacyComponents DirectPlay Windows-Defender-Default-Definitions MicrosoftWindowsPowerShellV2Root MicrosoftWindowsPowerShellV2 Internet-Explorer-Optional-amd64 NetFx3 WCF-Services45 WCF-TCP-PortSharing45 NetFx4-AdvSrvs MediaPlayback WindowsMediaPlayer Microsoft-Windows-MobilePC-LocationProvider-INF Printing-XPSServices-Features MSRDC-Infrastructure SearchEngine-Client-Package Xps-Foundation-Xps-Viewer WorkFolders-Client SMB1Protocol
A co jeśli interesuje nas stan jednego konkretnego składnika? Innymi słowy, jak szybko sprawdzić czy przykładowo funkcja Hyper-V została w systemie włączona? Aby to zrobić, wystarczy posłużyć się dodatkowym parametrem polecenia Get-WindowsOptionalFeature o nazwie -FeatureName, dla którego podajemy interesujący na składnik systemu Windows:
PS C:\Windows\system32> Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V Feature Name : Microsoft-Hyper-V Display Name : Platforma Hyper-V Description : Udostępnia usługi umożliwiające tworzenie maszyn wirtualnych i ich zasobów oraz zarządzanie nimi. Restart Required : Possible State : Enabled Custom Properties :