Powershell с Get-MessageTrackingLog (Exchange 2007) - PullRequest
0 голосов
/ 13 января 2011

Интересно, можешь ли ты мне помочь? Я пытаюсь извлечь список получателей, которые отправили электронные письма самим себе (из домена1 в домен2) с помощью инструмента get-messagetrackinglog в Exchange. Мой маленький сценарий, кажется, прекрасно работает с отправителем, однако после нескольких дней размышлений я не могу заставить его работать с получателями. Я подозреваю, что это потому, что может быть много получателей (в отличие от только одного отправителя) для каждого электронного письма, и это требует, чтобы массив был назначен переменной получателей, однако, будучи новичком в powershell, я не совсем уверен, как это сделать и как пропустить это. Логика следующая:

a) Я хочу использовать команду split для разделения всех отправителей (с помощью разделителя пробелов) и извлечения их в массив, б) затем отсоединить первые части адресов отправителя и получателя от доменов с помощью @ delimiter и c) сравните их первую часть адресов электронной почты, которые я получил (значения, возвращаемые adam @ domain1 и adam @ domain2). г) Если они совпадают - мне нужно экспортировать результаты сообщения электронной почты в .csv.

Я получил это далеко:

Get-MessageTrackingLog -server "pdnaex1" -EventID "SEND" -start "01/10/2010 00:00:00" -end "31/10/2010 23:59:59" -resultsize Unlimited | Где {[string] $ .sender.split ("@") [0] -подобно [string] $ .recipients.split ("@") [0]} | Выберите отметку времени, @ {Name = "Отправитель"; Выражение = {$ .sender}}, @ {Name = "Получатели"; Выражение = {$ .recipients}}, messagesubject | export-csv X: \ XXX.csv

Я знаю, что выше это неправильно, но надеюсь, я проясню свой вопрос.

Любая помощь очень ценится. Я подозреваю, что мой скрипт не работает, потому что мне не удается заполнить массив получателей и сравнить значение отправителя с каждой записью в этом массиве, но я не могу понять, как это сделать.

1 Ответ

0 голосов
/ 13 января 2011

Вы можете использовать -like для сравнения массива со скаляром, но вы не можете использовать его для сравнения скаляра с массивом.Аргумент массива должен стоять первым.

PS C:> $ a = "a", "b", "c"

PS C:> $ b = "b"

PS C:>$ a -подобный $ b

b

PS C:> $ b -подобный $ a

False

Вы можете получить arry, применив $_.recipients as [string] и разбив его на @, но вы не можете легко выбрать только пользовательскую часть из этого массива.

Кроме того, вам нужно указывать отправителей и получателей как $ .sender и $ .recipients, а не $ sender и $ получателей.

Частично протестировано:

Get-MessageTrackingLog -server "pdnaex1" -EventID "SEND" -start "01/ 10/2010 00:00:00 "-end" 31/10/2010 23:59:59 "-resultsize Unlimited |Где {($ .recipients |% {$ .split ("@") [0]}) -подобно $ _. Sender.split ("@") [0]} |Выберите отметку времени, @ {Name = "Отправитель"; Выражение = {$. Sender}}, @ {Имя = "Получатели"; Выражение = {$. Получатели}}, messagesubject |export-csv X: \ XXX.csv

Примечание: подчеркивания после $, похоже, не отображаются в сообщении в ответе.

...