2017-03-16 9 views
0

私は、特定のメールボックスが1か月以内に受信した電子メールの量を特定の個人に電子メールで送信するExchange用のpowershellスクリプトを作成しようとしています。これまでのところ私はガット:Exchange Automation Script

$date = Get-Date -Format MM/dd/yyyy 
$time = Get-Date -Format HH:mm:ss 
$previousMonth = 

PS C:\> Get-MessageTrackingLog -Recipients:mailbox1.org -start "02/01/2017 00:00:00" -end "$date $time" -EventId "Receive" -ResultSize unlimited | Measure-Object 
PS C:\> Get-MessageTrackingLog -Recipients:mailbox2.org -start "02/01/2017 00:00:00" -end "$date $time" -EventId "Receive" -ResultSize unlimited | Measure-Object 
PS C:\> Get-MessageTrackingLog -Recipients:mailbox3.org -start "02/01/2017 00:00:00" -end "$date $time" -EventId "Receive" -ResultSize unlimited | Measure-Object 
PS C:\> Get-MessageTrackingLog -Recipients:mailbox4.org -start "02/01/2017 00:00:00" -end "$date $time" -EventId "Receive" -ResultSize unlimited | Measure-Object 
ps c:\> Send-MailMessage -SmtpServer "server" -To "recipient email<recipient email>" -From "Monthly Mailbox Totals <email address>" -Subject "Monthly Mailbox Item Count" -Body "" 

私はとのトラブルを抱えていることはこれです:私はかなり前の月の1日を取得するには-start入力用の日付範囲を計算する方法を見つけ出すことはできません私は現在の日付と時刻から2番目に、私はどのようにこの形式から送信される電子メールの本文に合計を取得するつもりです。私はこのスクリプトが毎月1日に実行されるようにしたいと思っています。

アドバイスをいただきますようお願い申し上げます。

+0

にあなたの日付ストリングを変換するために、型アクセラレータを使用することができる時間枠を自分で設定できる柔軟性が必要な場合。自分自身を1つに限定しようとするべきです。過去に日付を取得し、現在の書式設定ロジックを保持するために使用できる日付メソッドがあります。トラッキングログ要求の結果も保存していません。これを自動化する方法も尋ねていますか? – Matt

答えて

0

System.DateTimeは、AddX(Days、Hours、Minutesなど)機能を持っています。これらを使用すると、正確な時間枠を指定できます。次に、返された値をGet-MessageTrackingLogから追加し、変数の内容を離れて送ります。

$StartDate = (Get-Date).AddDays(-14) #Get the last 2 Weeks 
$EndDate = Get-Date 
$i = 0 
$ += (Get-MessageTrackingLog -Recipients "RecipientA" -Start $StartDate -End $EndDate -EventId "Receive" -ResultSize unlimited | measure).Count 
$ += (Get-MessageTrackingLog -Recipients "RecipientB" -Start $StartDate -End $EndDate -EventId "Receive" -ResultSize unlimited | measure).Count 
Send-MailMessage -SmtpServer "server" -To "recipient" -From "sender" -Subject "Mailcount" -Body "Mail count for this month is $i" 

あなたは単に私がここ2-3個別の質問を参照してくださいDateTime

$StartDate = [DateTime]"3.10.17" 
+0

大変ありがとうございました! (Get-Date).AddDays(-14)を使用するとフォーマットできますか? MM/dd/yyyy HH:mm:ss (Get-Date).AddDays(-14)-Format MM/dd/yyyy HH:mm:ss – xs0u1x

+0

あなたはそうする必要はありません'Get-MessageTrackingLog'で使用するようにフォーマットしてください。現在の日付と時刻を使用し、14日を減算するだけです。出力目的でフォーマットする場合は、 '(Get-Date).AddDays(-14).ToString(" MM/dd/yyyy HH:mm:ss ")' – Fairy