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

Source Show Установленные роли и компоненты Windows

Отправка вывода команды через Format-Custom всегда помогает вам определить имена свойств, которые вы ищете.

В этом случае:

Get-WindowsFeature | Where-Object {$_.InstallState -like "Installed"}

... решит вашу проблему.

Другие вопросы по тегам