0

助けてくれませんか。Exchange内のget-messagetrackinglogツールを使用して、自分自身に(domain1からdomain2に)電子メールを送信した受信者のリストを抽出しようとしています。私の小さなスクリプトは送信者の部分ではうまく機能しているようですが、数日間熟考した後、受信者で機能させることができません。これは、電子メールごとに(1つの送信者だけではなく)多くの受信者が存在する可能性があり、受信者変数に配列を割り当てる必要があるためだと思いますが、PowerShellを初めて使用する場合は、その方法と方法が完全にはわかりません。それをパイプで通します。ロジックは次のとおりです。

a)分割コマンドを使用してすべての送信者を分離し(スペース区切り文字を使用)、それらを配列にフェッチします。b)次に、送信者と受信者の両方のアドレスの最初の部分を@区切り文字を使用してドメインから切り離します。c)最初の部分を比較します。私が持っている電子メールアドレスの数(adam@domain1とadam@domain2から返された値)。d)一致する場合-電子メールメッセージの結果を.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] -like [string] $ .recipients.split( "@")[0]} | タイムスタンプを選択、@ {Name = "Sender"; Expression = {$ .sender}}、@ {Name = "Recipients"; Expression = {$ .recipients}}、messagesubject | export-csv X:\ XXX.csv

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

どんな助けでも大歓迎です。受信者の配列にデータを入力し、送信者の値をその配列内の各エントリと比較できないため、スクリプトが失敗したと思われますが、その方法がわかりません。

4

1 に答える 1

0

-likeを使用して配列をスカラーと比較することはできますが、-likeを使用してスカラーを配列と比較することはできません。配列引数が最初に来る必要があります。

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

PS C:> $ b = "b"

PS C:>$a-$bのように

b

PS C:>$b-$aのように

誤り

$ _。recipientsを[string]としてキャストし、@で分割することで問題を解決できますが、その配列からユーザー部分だけを簡単に選択することはできません。

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

部分的にテスト済み:

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]})-like $ _。sender.split( "@")[0]} | タイムスタンプを選択、@ {Name = "Sender"; Expression = {$。sender}}、@ {Name = "Recipients"; Expression = {$。recipients}}、messagesubject | export-csv X:\ XXX.csv

注:$の後の下線は、回答の投稿に表示されていないようです。

于 2011-01-13T16:04:26.463 に答える