Я уверен, что это очень просто, но сегодня у меня все получилось лучше (я относительно новичок в Powershell). Кроме того, я уверен, что мой код может быть более элегантным.PowerShell: разделительный массив, содержащий массив
Для начала у меня есть код, который идет на наши серверы обмена, и возвращает отправленные сообщения от конкретного пользователя. Он помещает это в массив, называемый @Results. Таким образом, несколько записей будут выглядеть так (отредактировано для конфиденциальности):
C:\Windows\system32>$Results[3..5]
Timestamp MessageSubject Recipients
--------- -------------- ----------
01/09/2013 09:12:57 Subject1 {[email protected]}
01/09/2013 09:30:44 Subject2 {[email protected]}
01/09/2013 09:42:11 Subject3 {[email protected], [email protected]
Итак, я доволен этим. Однако моя проблема связана с несколькими списками получателей выше. Фактически, это его собственный массив. Из списка отправленной почты меня не интересует внутренняя почта, поэтому я хотел бы исключить записи в нашем домене (скажем, это globocorp.com выше). Итак, мое решение состояло в том, чтобы иметь пару циклов, чтобы перечислять все записи в виде собственных строк. Вот где я должен:
For ($k=0; $k -eq $Results.count; $k++)
{
For ($j=0; $j -eq $Results[$k].Recipients.Count; $j++)
{write-host $Results[$k].timestamp, $Results[$k].Recipients[$j], $Results[$k].MessageSubject
}
}
Это работает, но использует пару петель, которые, как я считаю, неэлегантны. Должен быть более аккуратный способ достижения вышеуказанного (возможно, для каждой команды?). Моей главной проблемой является, однако, что делать с выходом. Я не хочу использовать «write-host» и предпочел бы создавать выходы как объекты, которые я могу затем добавить в таблицу или создать csv. Затем я могу использовать функцию «Кому-объект ToUpper (Получатели)), а не функцию« *@GLOBOCORP.COM », чтобы исключить внутреннюю почту.
Однако, я не могу просто перечислить выход, затем передать его, как я получаю «пустой элемент трубы не допускается» ошибка, и список из объектов прилипает каждую запись на новой строке, то есть:
04 September 2013 18:19:12
[email protected]
Message subject
Любой совет очень ценится!