Awesome-and yes, I think I'm beginning to see the "power" of it =)

One more noob question if I may-This runs great at the prompt.  How the hay do 
I schedule it?  As in, I'm not sure what the shortcut should look like...

Thanks,
Bonnie

From: Campbell, Rob [mailto:[EMAIL PROTECTED]
Sent: Thursday, July 24, 2008 11:50 AM
To: MS-Exchange Admin Issues
Subject: RE: Inbound/Outbound Mail Stats

Powershell is good stuff!

One more change you can add if you want to accumulate the stats monthly.

These two lines replace setting the $outfile variable.

$lrundate = $today.adddays(-1)
$outfile = "internet_email_stats_" + $lrundate.month + "_" + $lrundate.year + 
".csv"

This results in an output file name with the month and year embedded.  The 
result is that the script will start a new csv file for each month.  You can 
change the "internet_email_stats_ " to whatever you want, but leave the rest if 
you want to accumulate the stats montly.





$today = get-date

$ht = "<server name here>"

$headings = '"Date","Sent","Send MB","Received","Receive MB"'

$rundate = $($today.adddays(-1)).toshortdatestring()

$lrundate = $today.adddays(-1)
$outfile = "internet_email_stats_" + $lrundate.month + "_" + $lrundate.year + 
".csv"

if (!(test-path $outfile)){ac $outfile $headings}

$recv_recs = get-messagetrackinglog -Server $ht -EventID "RECEIVE" -Start 
"$rundate 12:01:00 AM" -End "$rundate 11:59:59 PM" -resultsize unlimited
$smtp_recvs = $recv_recs |? {$_.source -eq "SMTP"}

$send_recs = get-messagetrackinglog -Server $ht -EventID "SEND" -Start 
"$rundate 12:01:00 AM" -End "$rundate 11:59:59 PM" -resultsize unlimited
$smtp_sends = $send_recs |? {$_.source -eq "SMTP"}

foreach ($smtp_recv in $smtp_recvs){$bytes_recv += $smtp_recv.totalbytes}

foreach ($smtp_send in $smtp_sends){$bytes_sent += $smtp_send.totalbytes}


            $mbytes_recv = "{0:F2}" -f $($bytes_recv/1mb)
            $mbytes_sent = "{0:F2}" -f $($bytes_sent/1mb)

$outstr = $rundate + "," + $smtp_sends.count + "," + $mbytes_sent + "," + 
$smtp_recvs.count + "," + $mbytes_recv
ac $outfile $outstr

________________________________
From: Miller Bonnie L. [mailto:[EMAIL PROTECTED]
Sent: Thursday, July 24, 2008 1:19 PM
To: MS-Exchange Admin Issues
Subject: RE: Inbound/Outbound Mail Stats

Okay, that is even cooler than I had imagined.  Looks like it adds a line for 
stats for each day.  This is awesome!

=)

-Bonnie

From: Campbell, Rob [mailto:[EMAIL PROTECTED]
Sent: Thursday, July 24, 2008 11:01 AM
To: MS-Exchange Admin Issues
Subject: RE: Inbound/Outbound Mail Stats

Here's the script with that change, and formatting added to round the MB counts 
to 2 decimals.



$today = get-date
$ht = "<server name here"

$headings = '"Date","Sent","Send MB","Received","Receive MB"'

$rundate = $($today.adddays(-1)).toshortdatestring()

$outfile = "internet_email_stats.csv"

if (!(test-path $outfile)){ac $outfile $headings}

$recv_recs = get-messagetrackinglog -Server $ht -EventID "RECEIVE" -Start 
"$rundate 12:01:00 AM" -End "$rundate 11:59:59 PM" -resultsize unlimited
$smtp_recvs = $recv_recs |? {$_.source -eq "SMTP"}

$send_recs = get-messagetrackinglog -Server $ht -EventID "SEND" -Start 
"$rundate 12:01:00 AM" -End "$rundate 11:59:59 PM" -resultsize unlimited
$smtp_sends = $send_recs |? {$_.source -eq "SMTP"}

foreach ($smtp_recv in $smtp_recvs){$bytes_recv += $smtp_recv.totalbytes}

foreach ($smtp_send in $smtp_sends){$bytes_sent += $smtp_send.totalbytes}

            $mbytes_recv = "{0:F2}" -f $($bytes_recv/1mb)
            $mbytes_sent = "{0:F2}" -f $($bytes_sent/1mb)

$outstr = $rundate + "," + $smtp_sends.count + "," + $mbytes_sent + "," + 
$smtp_recvs.count + "," + $mbytes_recv
ac $outfile $outstr

________________________________
From: Campbell, Rob [mailto:[EMAIL PROTECTED]
Sent: Thursday, July 24, 2008 12:48 PM
To: MS-Exchange Admin Issues
Subject: RE: Inbound/Outbound Mail Stats

Replace that $rundate =  line with this one:

$rundate = $($today.adddays(-1)).toshortdatestring()

________________________________
From: Miller Bonnie L. [mailto:[EMAIL PROTECTED]
Sent: Thursday, July 24, 2008 12:29 PM
To: MS-Exchange Admin Issues
Subject: RE: Inbound/Outbound Mail Stats

Wow Rob, that is really cool.  And, it's forcing me to learn a little more 
about powershell-my knowledge is still greatly limited by what I've actually 
used thus far.

So, I added my servername and changed the outfile to a path that exists 
(D:\foldername\something.csv), and saved as a .ps1 file.  In the Exchange mgmt 
shell, when I run the ps1 file, I get the following:

[PS] c:\myprompt>c:\scripts\getexternalmailstats.ps1

Cannot convert value "7/24/2008 10:15:49 AM" to type "System.Decimal". Error: "
Invalid cast from 'DateTime' to 'Decimal'."
At C:\scripts\getexternalmailstats.ps1:5 char:22
+ $rundate = $($today -  <<<< 1d).toshortdatestring()
You cannot call a method on a null-valued expression.
At C:\batch\plscriptlibrary\getexternalmailstats.ps1:5 char:44
+ $rundate = $($today - 1d).toshortdatestring( <<<< )

Any ideas?  I'm barely deciphering what you've written at the moment =)

Thanks,
Bonnie

From: Campbell, Rob [mailto:[EMAIL PROTECTED]
Sent: Thursday, July 24, 2008 9:18 AM
To: MS-Exchange Admin Issues
Subject: RE: Inbound/Outbound Mail Stats

I hacked this out of a script I already had written.  If you schedule this to 
run once a day, it should accumulate the internet email stats from the previous 
day to a .csv file.

You'll need to change the $ht variable to the name of your server.

You can go back farther than one day to back fill by manipulating the $rundate 
variable. $today - 1d will get the stats from yesterday.  If you change it to 
$today -2d it will get the stats from the day before yesterday, etc. within the 
limit of your message tracking log retention.

It has to run on an E2K7 server, or a workstation with the Exchange Management 
Shell installed.

If you want to use it with SCCM you can modify it to write an event to the 
application event log with the data, and have SCCM pick up and report on that 
event.







$today = get-date
$ht = "server name here"

$headings = '"Date","Sent","Send MB","Received","Receive MB"'
$rundate = $($today - 1d).toshortdatestring()
$outfile = "internet_email_stats.csv"

if (!(test-path $outfile)){ac $outfile $headings}

$recv_recs = get-messagetrackinglog -Server $ht -EventID "RECEIVE" -Start 
"$rundate 12:01:00 AM" -End "$rundate 11:59:59 PM" -resultsize unlimited
$smtp_recvs = $recv_recs |? {$_.source -eq "SMTP"}

$send_recs = get-messagetrackinglog -Server $ht -EventID "SEND" -Start 
"$rundate 12:01:00 AM" -End "$rundate 11:59:59 PM" -resultsize unlimited
$smtp_sends = $send_recs |? {$_.source -eq "SMTP"}

foreach ($smtp_recv in $smtp_recvs){$bytes_recv += $smtp_recv.totalbytes}

foreach ($smtp_send in $smtp_sends){$bytes_sent += $smtp_send.totalbytes}

            $mbytes_recv = $bytes_recv/1mb
            $mbytes_sent = $bytes_sent/1mb

$outstr = $rundate + "," + $smtp_sends.count + "," + $mbytes_sent + "," + 
$smtp_recvs.count + "," + $mbytes_recv
ac $outfile $outstr


________________________________
From: Miller Bonnie L. [mailto:[EMAIL PROTECTED]
Sent: Thursday, July 24, 2008 7:29 AM
To: MS-Exchange Admin Issues
Subject: Inbound/Outbound Mail Stats

Exchange 2007 SP1, one server with all roles.  What is the best way to get 
numbers that show our average inbound (received)/outbound (sent) mail stats per 
day?  We are looking for numbers of messages that travel to/from the Internet.

We do not currently have anything like MOM nor SCCM, but will be bringing in 
SCCM at some point if that could help.  If there are specific performance 
counters to track, that works for me-just don't know which ones to look at.  If 
Exchange already stores this data somewhere and I just need to pull it, even 
better.

Thanks,
Bonnie





**************************************************************************************************

Note:

The information contained in this message may be privileged and confidential and

protected from disclosure.  If the reader of this message is not the intended

recipient, or an employee or agent responsible for delivering this message to

the intended recipient, you are hereby notified that any dissemination,

distribution or copying of this communication is strictly prohibited. If you

have received this communication in error, please notify us immediately by

replying to the message and deleting it from your computer.

**************************************************************************************************







**************************************************************************************************

Note:

The information contained in this message may be privileged and confidential and

protected from disclosure.  If the reader of this message is not the intended

recipient, or an employee or agent responsible for delivering this message to

the intended recipient, you are hereby notified that any dissemination,

distribution or copying of this communication is strictly prohibited. If you

have received this communication in error, please notify us immediately by

replying to the message and deleting it from your computer.

**************************************************************************************************




**************************************************************************************************

Note:

The information contained in this message may be privileged and confidential and

protected from disclosure.  If the reader of this message is not the intended

recipient, or an employee or agent responsible for delivering this message to

the intended recipient, you are hereby notified that any dissemination,

distribution or copying of this communication is strictly prohibited. If you

have received this communication in error, please notify us immediately by

replying to the message and deleting it from your computer.

**************************************************************************************************







**************************************************************************************************

Note:

The information contained in this message may be privileged and confidential and

protected from disclosure.  If the reader of this message is not the intended

recipient, or an employee or agent responsible for delivering this message to

the intended recipient, you are hereby notified that any dissemination,

distribution or copying of this communication is strictly prohibited. If you

have received this communication in error, please notify us immediately by

replying to the message and deleting it from your computer.

**************************************************************************************************




~ Ninja Email Security with Cloudmark Spam Engine Gets Image Spam ~
~             http://www.sunbeltsoftware.com/Ninja                ~

Reply via email to