Where-Object не возвращает никакого содержимого
Я начинаю с Windows Server 2016 и использую версию только для CLI. Я пытаюсь определить, какие функции установлены на моем компьютере. Я пытался сделать это, просматривая материал с
Get-WindowsFeature
Очевидно, я не люблю читать все вручную, чтобы увидеть, установлено ли оно. Поэтому я хотел бы перечислить только те вещи, которые на самом деле установлены. Я попытался сделать это с помощью следующей команды:
Get-WindowsFeature | Where-Object {$_."install state" -like "Installed"}
Это ничего не возвращает вообще (обратите внимание, что, когда я просматриваю все, есть установленные модули). И когда я пытаюсь запустить коммандос ниже, я на самом деле возвращаю содержимое:
Get-WindowsFeature | Where-Object {$_."name" -like "dns"}
Что я делаю неправильно? Это неправильное использование команды, является ли другое имя для "состояния установки" чем-то другим?
2 ответа
Я пытаюсь определить, какие функции установлены на моем компьютере.
Используйте следующую команду PowerShell:
Эта однострочная оболочка PowerShell импортирует модуль ServerManager и показывает роли и функции Windows, которые установлены в данный момент.
Import-module servermanager ; Get-WindowsFeature | where-object {$_.Installed -eq $True} | format-list DisplayName
Чтобы просто вернуть True или False, если установлена определенная роль или функция, вы можете использовать это (в качестве примера используется роль Hyper-V):
Import-module servermanager ; (Get-WindowsFeature -name hyper-v).Installed
Для получения дополнительной информации см.: http://technet.microsoft.com/en-us/library/cc732757.aspx
Отправка вывода команды через Format-Custom
всегда помогает вам определить имена свойств, которые вы ищете.
В этом случае:
Get-WindowsFeature | Where-Object {$_.InstallState -like "Installed"}
... решит вашу проблему.