Вывод данных без заголовков столбцов с помощью PowerShell - PullRequest
29 голосов
/ 11 сентября 2009

Я хочу иметь возможность выводить данные из PowerShell без заголовков столбцов. Я знаю, что могу скрыть заголовок столбца, используя Format-Table -HideTableHeaders, но это оставляет пустую строку вверху.

Вот мой пример:

get-qadgroupmember 'Domain Admins' | Select Name | ft -hide | out-file Admins.txt

Как убрать заголовок столбца и пустую строку?

Я мог бы добавить еще одну строку и сделать это:

Get-Content Admins.txt | Where {$_ -ne ""} | out-file Admins1.txt

Но я могу сделать это в одной строке?

Ответы [ 7 ]

41 голосов
/ 11 сентября 2009

В вашем случае, когда вы просто выбираете одно свойство, возможно, самый простой способ - вообще обойти любое форматирование:

get-qadgroupmember 'Domain Admins' | foreach { $_.Name }

Это даст вам простой string[] без заголовков столбцов или пустых строк. Командлеты Format-* предназначены главным образом для потребления человеком, поэтому их выходные данные не предназначены для легкого машиночитания или разбора.

Для нескольких свойств я бы, вероятно, использовал оператор формата -f. Что-то вроде

alias | %{ "{0,-10}{1,-10}{2,-60}" -f $_.COmmandType,$_.Name,$_.Definition }

, что не очень красиво, но дает вам простой и полный контроль над форматированием вывода. И никаких пустых строк: -)

28 голосов
/ 31 января 2011

Если вы используете "format-table", вы можете использовать -hidetableheaders

23 голосов
/ 07 августа 2014

Лучший ответ - оставить скрипт таким, каким он был. Делая Select name, следуйте за ним -ExpandProperty Name следующим образом:

get-qadgroupmember 'Domain Admins' | Select Name -ExpandProperty Name | out-file Admins.txt
2 голосов
/ 14 сентября 2017

добавьте параметр -expandproperty после объекта select, он вернет только данные без заголовка.

2 голосов
/ 05 февраля 2017

Сначала мы получаем вывод команды, затем оборачиваем ее и выбираем одно из ее свойств. Есть только одно и его «Имя», которое мы и хотим. Поэтому мы выбираем свойство groups с помощью «.name» и выводим его.

в текстовый файл

 (Get-ADGroupMember 'Domain Admins' |Select name).name | out-file Admins1.txt

в CSV

(Get-ADGroupMember 'Domain Admins' |Select name).name | export-csv -notypeinformation "Admins1.csv"
2 голосов
/ 07 июня 2012

Джои упомянул, что Format-* для потребления человеком. Если вы пишете в файл для машинного потребления, может быть, вы хотите использовать Export-*? Некоторые хорошие

  • Export-Csv - значение, разделенное запятыми. Отлично подходит, когда вы знаете, какими будут столбцы
  • Export-Clixml - Вы можете экспортировать целые объекты и коллекции. Это отлично подходит для сериализации.

Если вы хотите прочитать обратно, вы можете использовать Import-Csv и Import-Clixml. Я нахожу, что мне это нравится больше, чем придумывать свои собственные форматы данных (также довольно легко набрать Import-Ini, если вы этого хотите).

1 голос
/ 14 января 2019

-expandproperty не работает более чем с 1 объектом. Вы можете использовать это:

Select-Object Name | ForEach-Object {$_.Name}

Если существует более одного значения, то:

Select-Object Name, Country | ForEach-Object {$_.Name + " " + $Country}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...