Назад | Перейти на главную страницу

Powershell - Использование предложения WHERE после псевдонима @ {name ничего не возвращает

Могу ли я не использовать WHERE в канале после псевдонима @ {name?

Мне нужно использовать в выводе собственные заголовки столбцов, поэтому я использую синтаксис имени @ {. Позже сортировка работает с использованием псевдонима, который я ей дал, а предложение WHERE - нет. Я попытался вернуться к исходному $ _. имя переменной, но они, похоже, тоже не работают. Когда я убираю предложение WHERE, я получаю вывод с псевдонимами заголовков.

ПРИМЕР без псевдонима @ {Имя и ГДЕ работает

PS C:\> Get-WmiObject Win32_operatingsystem | select version,BuildNUmber | where { $_.buildnumber -eq 3790} |  sort version

version                                                                                                BuildNUmber                                                                                           
-------                                                                                                -----------                                                                                           
5.2.3790                                                                                                   3790                 

ПРИМЕР с псевдонимом и ГДЕ не работает

Get-WmiObject Win32_operatingsystem | select @{Name="Ver";Expression={$_.version}}, @{Name="Build";Expression={$_.BuildNUmber}} | where { "build" -eq 3790} |  sort "ver" 

EXAMPLE с псевдонимом и NO WHERE, выводится. SORT использует псевдоним и тоже работает.

PS C:\> Get-WmiObject Win32_operatingsystem | select @{Name="Ver";Expression={$_.version}}, @{Name="Build";Expression={$_.BuildNUmber}} |  sort "ver" 

Ver                                                                                                    Build                                                                                                 
---                                                                                                    -----                                                                                                 
5.2.3790                                                                                               3790                                                                                                  

Итак, в идеале я хотел бы иметь возможность использовать имя @ {с предложением WHERE ..

У вас есть синтаксическая ошибка:

where { "build" -eq 3790} 

Вышеупомянутый оператор функционально такой же, как:

where { $false }

Которая не вернет абсолютно ничего, что бы вы ей ни передали.

Измените это на

where { $_.Build -eq 3790 }