2011-01-13 80 views
0

我不知道你是否可以幫助我。我正嘗試使用Exchange中的get-messagetrackinglog工具提取已發送電子郵件給自己(從domain1到domain2)的收件人列表。我的小腳本似乎與發件人的部分工作正常,但經過幾天的思考,我無法使其與收件人一起工作。我懷疑這是因爲每個電子郵件可能有很多收件人(而不是隻有一個發件人),這需要將一個數組分配給收件人變量,但是對於PowerShell而言是新的。我不完全知道如何執行此操作,以及如何操作通過管道。邏輯如下:Powershell與Get-MessageTrackingLog(Exchange 2007)

a)我想使用split命令來隔離所有發件人(使用空格分隔符)並將它們取到數組中,然後將發件人和收件人的第一部分地址從使用@ delimiter和 的域名c)比較我獲得的第一部分電子郵件地址(從adam @ domain1和adam @ domain2返回的值)。 d)如果它們匹配 - 我需要將電子郵件結果導出到.csv。

我有這麼遠:

GET-MessageTrackingLog -server 「pdnaex1」 -EventID 「SEND」 - 啓動 「01/10/2010 00:00:00」 末端「31/10/2010 23 :59:59「-resultsize Unlimited |其中{[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將數組與標量進行比較,但不能用它來比較標量和數組。數組參數必須先到達。

PS C:> $一個= 「A」, 「B」, 「C」

PS C:> $ B = 「b」 的

PS C:> $ A樣$ B

b

PS C:> $ b $樣一個

您可以通過鑄造$得到ARRY _收件人爲[字符串]和將它拆分到@上,但不能輕鬆地從該數組中選擇用戶部分。

此外,您需要引用發件人和收件人爲$ .sender和$.recipients,而不是$ sender和$ recipients。

部分測試:

GET-MessageTrackingLog -server 「pdnaex1」 -EventID 「SEND」 - 啓動 「01/10/2010 00:00:00」 末端「31/10/2010 23:59: 59「 - 結果無限制| {{$ .recipients |%{$ .split(「@」)[0]})like $ _。sender.split(「@」)[0]} |選擇時間戳,@ {Name =「Sender」; Expression = {$。sender}},@ {Name =「Recipients」; Expression = {$。recipients}},messagesubject | export-csv X:\ XXX。csv

注意:$後的下劃線似乎不會顯示在答案中的帖子中。

+0

太棒了,它的工作!沒有意識到這將是那麼容易...... :)非常感謝它背後的解釋! – adomce 2011-01-13 17:01:20

相關問題