Подтвердить что ты не робот

Выходные данные без заголовков столбцов с использованием PowerShell

Я хочу иметь возможность выводить данные из 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

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

4b9b3361

Ответ 1

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

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

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

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

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

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

Ответ 2

Если вы используете "таблицу формата", вы можете использовать -hidetableheaders

Ответ 3

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

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

Ответ 4

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

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

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

Ответ 5

Сначала мы захватываем вывод команды, затем завершаем его и выбираем одно из его свойств. Существует только одно и его "Имя", которое мы хотим. Таким образом, мы выбираем свойство 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"

Ответ 6

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

Ответ 7

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

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

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

Select-Object Name, Country | ForEach-Object {$_.Name + " " + $Country}

Ответ 8

get-qadgroupmember 'Администраторы домена' | Выберите имя -ExpandProperty Имя | out-file Admins.txt Это решение работает нормально для меня, но у меня есть более одной переменной, как обрабатывать в этом случае?