Как выводить данные без таблицы в PowerShell


По умолчанию многие командлеты PowerShell выводят данные в виде отформатированной таблицы или списка, например:

Get-ChildItem

Набор выводимых данных не является исчерпывающим и вы можете изменить его — добавить или убрать столбцы таблицы, подробности об этом смотрите в статье «Как в PowerShell менять набор выводимых по умолчанию данных».

Но что если нам не нужна таблица, а нужные данные только из одного столбца и без форматирования? Например, мы хотим вывести (или сохранить в файл) только имена файлов и папок в директории.

Для обработки строк можно использовать командлет Set-Content. Рассмотрим следующий пример:

Get-ChildItem | Set-Content dir.txt
Get-Content dir.txt

Первая команда получает список файлов и папок в текущей папке и передаёт их командлету Set-Content для обработки и сохранения в файл dir.txt. Затем вторая команда показывает содержимое файла dir.txt:


В принципе, мы получили список файлов, но он содержит абсолютные пути. Но это не совсем то, что мы хотели.

Смотрите также: Командлеты Set-Content и Add-Content для обработки строк

Чтобы в точности получить нужное свойство (столбец таблицы) используйте конструкцию вида:


(КОМАНДЛЕТ).СВОЙСТВО

К примеру:

(Get-ChildItem).Name

Да, для командлета Get-ChildItem имеется опция -Name с помощью которой достигается точно такой же результат — выводятся только имена файлов. Но показанный выше метод является универсальным и позволяет выводить любое свойство минуя остальные данные:

(Get-ChildItem).Attributes
(Get-ChildItem).CreationTime
(Get-ChildItem).LastAccessTime

В скобках вы можете указывать опции командлетов, например:

(Get-Alias -Definition '*get*').Name

Также вы можете использовать в скобках конвейер:

(КОМАНДЛЕТ1 | КОМАНДЛЕТ2 | КОМАНДЛЕТ3 | КОМАНДЛЕТ4).СВОЙСТВО

Смотрите также: Как в PowerShell сохранить вывод в файл (аналоги > и >>)


Рекомендуется Вам:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *