Вывод в файл многозначных свойств объекта

В Exchange 2007/2010 некоторые свойства объектов являются многозначными. То есть, фактически представляют из себя массив. Самый простой пример – набор smtp-адресов почтового ящика.

[PS] C:Windowssystem32>Get-Mailbox Stas | fl Name,EmailAddresses

Name: Stas
EmailAddresses: {smtp:st@buldakov.ru, SMTP:stas@buldakov.ru}

Сегодня с Олегом Крыловым пытались вывести в csv-файл похожий объект. Изначально задача стояла такая – нужно вывести разрешения AD на коннектор получения в csv-файл. Для начала через Get-ReceiveConnector получаем сам объект-коннектор, затем смотрим права на него через Get-ADPermissions. Получается примерно следующее:

Столбец Rights – то что нам необходимо. Пытаемся его перенаправить прямо в Export-Csv. Получается следующий файл:

Немного не то, что мы ожидали. Вместо самого значения свойства в csv-файл ушёл его тип. Давайте попробуем посмотреть, почему так произошло. Для этого посмотрим что это за объекты:

Сразу видно, что нужные нам свойства (AccessRights и ExtendedRights) являются многозначными. Возникает вопрос – как их корректно вывести в csv-файл? Верный ответ удалось подсмотреть здесь. Итого команда получается следующая:

Get-ReceiveConnector "EVLAB-EXDefault EVLAB-EX" | Get-ADPermission |
Select User,
@{Name='AccessRights';Expression={[string]::join(";",($_.AccessRights))}},
@{Name='ExtendedRights';Expression={[string]::join(";",($_.ExtendedRights))}} |
Export-Csv c:exp.txt

На выходе имеем следующий файл:

Ура!

2 thoughts on “Вывод в файл многозначных свойств объекта

  1. “Сразу видно, что нужные нам свойства (AccessRights и ExtendedRights) являются многозначными”

    Это откуда видно то?

    get-receiveconnector | Get-ADPermission| select-object extendedrights | gm

    TypeName: Selected.Microsoft.Exchange.Management.RecipientTasks.ADAcePresentationObject

    Name MemberType Definition
    —- ———- ———-
    Equals Method bool Equals(System.Object obj)
    GetHashCode Method int GetHashCode()
    GetType Method type GetType()
    ToString Method string ToString()
    ExtendedRights NoteProperty ExtendedRights=null

    У поля ExtendedRights тип NoteProperty, а может иметь много значений.

    NoteProperty is a name-value pair, like FirstName = Alice

    Вася/Вадим, не ржать.

Leave a Reply

Your email address will not be published. Required fields are marked *