2011-01-13 3 views
0

도와 주실 수 있을지 궁금합니다. Exchange 내에서 get-messagetrackinglog 도구를 사용하여 자신에게 전자 메일을 보낸받는 사람 목록 (domain1에서 domain2)을 추출하려고합니다. 내 작은 스크립트가 보낸 사람의 부분과 잘 작동하는 것 같지만 몇 일간 숙고 한 후받는 사람과 함께 작동시키지 못합니다. 필자는 각 이메일에 대해 많은 수신자가있을 수 있기 때문에 의심 스럽습니다.이 경우 전자 메일에 대해 배열을 지정해야하지만받는 사람 변수에 할당해야합니다. 그러나 powershell에는 익숙하지 않습니다. 그것을 통해 파이프. 논리는 다음과 같습니다.Powershell (Get-MessageTrackingLog 사용) (Exchange 2007)

a) 분할 기호를 사용하여 모든 구분 기호 (공백 구분 기호 사용)를 분리하고 배열 b)로 가져와 b) 보낸 사람과받는 사람의 첫 번째 주소 부분을 모두 분리하려면 @ delimiter와 을 사용하는 도메인 c) 내가 가지고있는 이메일 주소의 첫 번째 부분 (adam @ domain1과 adam @ domain2에서 반환 된 값)을 비교하십시오. d) 일치하는 경우 - .csv로 내보내려면 이메일 메시지 결과가 필요합니다.

나는 여기까지 가지고있다 :

가져-MessageTrackingLog -server "pdnaex1"-EventID "31/10/2010 (23)을"보내기 "-start"2010년 1월 10일 0시 0분 0초 "-end : 59 : 59 "-resultsize Unlimited | where {[string] $ .sender.split ("@") [0] -like [string] $ .recipients.split ("@") [0]} | @ {Name = "Sender"; Expression = {$ .sender}}, @ {Name = "Recipients", Expression = {$ .recipients}}, messagesubject | export-csv X : \ XXX.csv

위의 내용은 잘못된 것이지만 제 질문을 분명히하기를 바랍니다.

도움을 주시면 대단히 감사하겠습니다. 수신자 배열을 채우지 않고 해당 배열 내의 각 항목에 대해 보낸 사람의 값을 비교하지 못하기 때문에 스크립트가 실패한 것 같습니다.하지만 그렇게 할 수있는 방법은 없습니다.

답변

0

배열을 스칼라와 비교하는 데 like를 사용할 수 있지만 스칼라를 배열과 비교하는 데는 like를 사용할 수 없습니다. 배열 인수가 먼저 와야합니다.

PS C :> $의 A = "A", "B", "C"

PS C :> $의 B = "B"

PS C는>는 -like $으로 B를 달러

B

PS C :.> $ B -like $ A

거짓

당신은 $를 주조하여이 배열을 얻을 수 있습니다 _ [문자열]로받는 사람과 @에서 분리하면 배열에서 사용자 부분 만 쉽게 선택할 수 있습니다.

또한 발신자와 수신자를 $ .sender, $ .recipients, $ sender 및 $ recipients 대신 참조해야합니다.

은 부분적으로 테스트 :

가져-MessageTrackingLog -server "pdnaex1"-EventID "31/10/2010 23시 59분을"보내기 "-start"2010년 1월 10일 0시 0분 0초 "-end : 59 "-resultsize 무제한 | $ _. sender.split ("@") [0]} | {$ .recipients | % {$ .split ("@") [0]}) 타임 스탬프를 선택하십시오. @ {Name = "Sender", Expression = {$. sender}}, @ {Name = "Recipients"; Expression = {$. recipients}}, messagesubject | export-csv X : \ XXX.csv

참고 : $ 다음의 밑줄은 답안의 게시물에 나타나지 않는 것 같습니다.

+0

멋진 작품! 그것이 쉬운 일임을 깨닫지 못했습니다 ... :) 뒤에있는 설명에 대해 고마워요! – adomce

관련 문제