2011-01-13 29 views
0

あなたが私を助けることができるのだろうかと思います。 Exchange内のget-messagetrackinglogツールを使用して、自分自身に電子メールを送信した受信者の一覧(domain1からdomain2)を抽出しようとしています。私の小さなスクリプトは送信者側でうまくいくようですが、数日後には受信者と一緒に動作させることができません。私は、これは電子メールごとに多くの受信者(送信者が1人ではなく)が存在する可能性があるためだと思うが、これは受信者変数に割り当てる配列が必要だが、powershellには新しかった。それを通す。ロジックは以下の通りです:Get-MessageTrackingLogを使用するPowershell(Exchange 2007)

A)私は両方の送信者とアドレスの受信者の最初の部分からを切り離すために当時)のスペース区切り文字を使用した(すべての送信者を分離するために、分割コマンドを使用します)と B、配列にそれらを取得したいです@区切り文字と を使用するドメインc)私が持っている電子メールアドレスの最初の部分(adam @ domain1とadam @ domain2から返された値)を比較します。 d)一致する場合 - 電子メールメッセージの結果を.csvにエクスポートする必要があります。

私がここまで持っている: "pdnaex1" -server

のGet-MessageTrackingLogは、 "2010年1月10日00:00:00" -startを "SEND" -EventID末端「31/10/2010 23 :59:59 " - 無制限化|ここで{{string} $ .sender.split( "@")[0]のような[string] $ .recipients.split( "@")[0]} |タイムスタンプを選択すると、@ {Name = "Sender"; Expression = {$ .sender}}、@ {Name = "Recipients"; Expression = {$ .recipients}}、messagesubject | export-csv X:\ XXX.csv

私は上記が間違っていることを知っていますが、私の質問を明確にすることを望みます。

ご協力いただきまして誠にありがとうございます。受信者の配列に値を設定して送信者の値をその配列内の各エントリと比較するのに失敗したため、スクリプトが失敗したと思われますが、その方法を理解することはできません。

答えて

0

-likeを使用して配列をスカラーに比較できますが、スカラーを配列と比較するために使用することはできません。配列の引数が最初に来なければなりません。

PS C:>の$ A = "A"、 "B"、 "C"

PS C:> $ Bの= "B"

PS C:> $ A様$ Bを

B

PS C:> $ B $様

あなたは$をキャストしてARRYを取得することができます_ [文字列]などの受信者と@で分割することはできますが、その配列からユーザー部分だけを簡単に選択することはできません。

さらに、$ senderと$ recipientではなく、$ .senderと$ .recipientsのように、送信者と受信者を参照する必要があります。

部分的にテストされ

: "pdnaex1" -server

のGet-MessageTrackingLog "は2010年1月10日00:00:00" -startを "SEND" -EventID末端「31/10/2010 23:59: 59 "-resultsize無制限| $ _。sender.split( "@")[0]} | {$ .recipients |%{$ .split( "@")[0]})タイムスタンプを選択すると、@ {Name = "Sender"; Expression = {$。sender}}、@ {Name = "Recipients"; Expression = {$。recipients}}、messagesubject | export-csv X:\ XXX。csv

注:$の後のアンダースコアは、回答のポストに表示されていないようです。

+0

素晴らしい、それは働いた!それは簡単だろうと気づいていない... :)それの背後にある説明のために多くの感謝! – adomce

関連する問題