Обязательно прочитайте предыдущие статьи в серии:
- Узнайте, как автоматизировать Windows с помощью PowerShell
- Обучение использованию командлетов в PowerShell
- Обучение использованию объектов в PowerShell
И оставайтесь настроенными для остальной части серии всю неделю.
Форматирование по умолчанию
Когда я впервые начал работать с PowerShell, я думал, что все было волшебным, но, правда, просто нужно немного времени, чтобы понять, что происходит под капотом. То же самое верно для системы форматирования PowerShell. На самом деле, если вы запустите командлет Get-Service, выведенный вывод отобразит только 3 свойства: Status, Name и DisplayName.
notepad C:WindowsSystem32WindowsPowerShellv1.0DotNetTypes.format.ps1xml
Если мы используем функцию поиска Notepad, мы можем быстро перейти к разделу, в котором подробно описывается вывод командлета Get-Service, ища тип ServiceController.
Форматирование ваших данных
Если вас не устраивает форматирование объекта или типа по умолчанию, вы можете свернуть свое собственное форматирование. Для этого необходимо знать три командлета.
- Format-List
- Format-Table
- Format-Wide
Format-Wide просто берет набор объектов и отображает единственное свойство каждого объекта. По умолчанию он будет искать свойство name; если ваши объекты не содержат свойства имени, он будет использовать первое свойство объекта после сортировки свойств в алфавитном порядке.
Get-Service | Format-Wide
Get-Service | Format-Wide -Property DisplayName -Column 6
Этот табличный вид действительно очень подходит для такой информации, но позвольте нам сделать вид, что мы хотим просмотреть его в виде списка. Все, что нам действительно нужно сделать, это Format-List.
Get-Process | Format-List
Get-Process | Format-List –Property *
Get-Process | Format-List –Property name,id
Format-Table, с другой стороны, берет данные и превращает их в таблицу. Поскольку наши данные из Get-Process уже представлены в виде таблицы, мы можем использовать его для простого выбора свойств, которые мы хотим отобразить в таблице. Я использовал параметр AutoSize, чтобы все данные вписывались в один экран.
Get-Process | Format-Table name,id –AutoSize
Фильтрация и сравнение
Одна из лучших вещей, связанных с использованием конвейера на основе объектов, заключается в том, что вы можете фильтровать объекты из конвейера на любом этапе с помощью командлета Where-Object.
Get-Service | Where-Object {$_.Status -eq “Running”}
- eq (равно)
- neq (не равно)
- (больше)
- ge (больше или равно)
- lt (меньше)
- le (меньше или равно)
- как (Подстановочная строка)
Полный список и дополнительная информация можно просмотреть в файле концептуальной справки about_comparison, однако для синтаксиса Where-Obeject требуется некоторое время. Это все за это время!