Преобразование массива Powershell в текст, чтобы его можно было экспортировать в CSV или HTML - PullRequest
2 голосов
/ 07 января 2020

Я пытаюсь преобразовать вывод команды powershell (AWS Tools) в строки, чтобы я мог экспортировать их в CSV или HTML. Я за свою жизнь не могу этого понять. Я видел комментарии к хеш-таблицам, именам элементов и т. Д. c. Кажется, ничто не поможет мне. (Я очень новичок ie).

Это то, что я получил. Эта команда

(Get-IAMAccountAuthorizationDetail).UserDetailList | Select UserName, Grouplist

выведет это (с лучшим интервалом):

UserName GroupList
-------- ----- ----
User1 {Admins, Test}
User2 {Admins}

Кажется, я не могу понять, как получить эти данные, чтобы их можно было преобразовать в CSV или HTML , Эти скобки указывают на его объект, массив или что-то. Может кто-нибудь показать мне код, который преобразует это в текст или что-то, что будут работать команды Convertto-CVS o Convertto- HTML.

Вывод (подмножество) команды Get-Member такой:

TypeName: Amazon.IdentityManagement.Model.UserDetail Имя: равно MemberType: определение метода: bool Equals (System.Object obj)

TypeName: Amazon.IdentityManagement.Model.UserDetail Имя: GetHashCode MemberType: Определение метода: int GetHashCode ()

TypeName: Amazon.IdentityManagement.Model.UserDetail Имя: GroupList MemberType: Определение свойства: System.Collections.Generi c .List [string] GroupList {get; set;}

Спасибо

1 Ответ

2 голосов
/ 08 января 2020

Вы можете сделать что-то вроде следующего, что создаст список с разделителями точкой с запятой в ячейке GroupList:

(Get-IAMAccountAuthorizationDetail).UserDetailList |
    Select-Object UserName,@{n='GroupList';e={$_.Grouplist -join ';'}}

Объяснение:

Синтаксис @{n='Name';e={Expression}} называется вычисляемым свойством, как объяснено в Select-Object . Вот некоторая информация о вычисляемом свойстве:

  • Это таблица ha sh с пользовательскими свойствами.
  • Первое свойство Name, которое является меткой для вашего выражение выражения. n, Name, l и label - все допустимые имена свойств для этого свойства.
  • Значение, переданное n, является просто строкой, которую вы создаете. Это имя свойства, которое будет отображаться в вашем выводе, и оно не обязательно должно уже существовать в вашем объекте. Ваша фактическая собственность называется GroupList. Как пример с n='All The Groups', the property name would become Все группы` в вашем выводе. Нет ничего плохого в том, чтобы повторно использовать то же имя, которое в настоящее время имеет свойство.
  • Expression или e - это ScriptBlock, поэтому он окружен {}. ScriptBlock отвечает за создание значения в вашем пользовательском свойстве.
  • $_ - текущий объект конвейера, переданный в ScriptBlock. Это означает, что если у вас есть коллекция (как в вашем случае), $_ будет представлять каждый из этих элементов по порядку.
  • Если вы хотите добавить другое вычисляемое свойство, просто добавьте запятую после последней и используйте вычисляемый синтаксис свойства примерно так:

    Select-Object @{n='CustomProperty1';e={$_.ObjectProperty1}},@{n='CustomProperty2';e={$_.ObjectProperty2}}
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...