В 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
На выходе имеем следующий файл:
Ура!
“Сразу видно, что нужные нам свойства (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
Вася/Вадим, не ржать.
угу, не ржите.
{} – вот эти скобки не говорят разве, что в них содержится массив объектов?