هل يوجد طريقه لمعرفه عدد الايميلات الداخله والخارجه من كل مستخدم للأكسجينج 2010
مثلا
user =ammar
received =50 mail
sent= 70 mail
from 11/03/2012 to 12/03/2012
ولكم جزيل الشكر
عرض للطباعة
هل يوجد طريقه لمعرفه عدد الايميلات الداخله والخارجه من كل مستخدم للأكسجينج 2010
مثلا
user =ammar
received =50 mail
sent= 70 mail
from 11/03/2012 to 12/03/2012
ولكم جزيل الشكر
نعم اخي توجد , قم بزياره الرابط الاتي ففيه بعض التفاصيل التي من خلالها بامكانك عمل متابعه لما تريد
https://www.simple-talk.com/sysadmin...exchange-2007/
بصراحة انا عندي سكربت لكل المستخدمين لمده يوم ,, يعني بنهاية اليوم بعطيك تقرير كامل عن الكل ,, وراح احاول اعدلك عليه حتى يصبح زي ما بدك ,, لكن الان جربه ( هل تعرف كيف تستعمل السكربت بالمناسبة ؟ )
#mjolinor #02/24/2011 #requires -version 2.0 $today = get-date $rundate = $($today.adddays(-1)).toshortdatestring() $outfile_date = ([datetime]$rundate).tostring("yyyy_MM_dd") $outfile = "email_stats_" + $outfile_date + ".csv" $dl_stat_file = "DL_stats.csv" $accepted_domains = Get-AcceptedDomain |% {$_.domainname.domain} [regex]$dom_rgx = "`(?i)(?:" + (($accepted_domains |% {"@" + [regex]::escape($_)}) -join "|") + ")$" $mbx_servers = Get-ExchangeServer |? {$_.serverrole -match "Mailbox"}|% {$_.fqdn} [regex]$mbx_rgx = "`(?i)(?:" + (($mbx_servers |% {"@" + [regex]::escape($_)}) -join "|") + ")\>$" $msgid_rgx = "^\<.+@.+\..+\>$" $hts = get-exchangeserver |? {$_.serverrole -match "hubtransport"} |% {$_.name} $exch_addrs = @{} $msgrec = @{} $bytesrec = @{} $msgrec_exch = @{} $bytesrec_exch = @{} $msgrec_smtpext = @{} $bytesrec_smtpext = @{} $total_msgsent = @{} $total_bytessent = @{} $unique_msgsent = @{} $unique_bytessent = @{} $total_msgsent_exch = @{} $total_bytessent_exch = @{} $unique_msgsent_exch = @{} $unique_bytessent_exch = @{} $total_msgsent_smtpext = @{} $total_bytessent_smtpext = @{} $unique_msgsent_smtpext=@{} $unique_bytessent_smtpext = @{} $dl = @{} $obj_table = { @" Date = $rundate User = $($address.split("@")[0]) Domain = $($address.split("@")[1]) Sent Total = $(0 + $total_msgsent[$address]) Sent MB Total = $("{0:F2}" -f $($total_bytessent[$address]/1mb)) Received Total = $(0 + $msgrec[$address]) Received MB Total = $("{0:F2}" -f $($bytesrec[$address]/1mb)) Sent Internal = $(0 + $total_msgsent_exch[$address]) Sent Internal MB = $("{0:F2}" -f $($total_bytessent_exch[$address]/1mb)) Sent External = $(0 + $total_msgsent_smtpext[$address]) Sent External MB = $("{0:F2}" -f $($total_bytessent_smtpext[$address]/1mb)) Received Internal = $(0 + $msgrec_exch[$address]) Received Internal MB = $("{0:F2}" -f $($bytesrec_exch[$address]/1mb)) Received External = $(0 + $msgrec_smtpext[$address]) Received External MB = $("{0:F2}" -f $($bytesrec_smtpext[$address]/1mb)) Sent Unique Total = $(0 + $unique_msgsent[$address]) Sent Unique MB Total = $("{0:F2}" -f $($unique_bytessent[$address]/1mb)) Sent Internal Unique = $(0 + $unique_msgsent_exch[$address]) Sent Internal Unique MB = $("{0:F2}" -f $($unique_bytessent_exch[$address]/1mb)) Sent External Unique = $(0 + $unique_msgsent_smtpext[$address]) Sent External Unique MB = $("{0:F2}" -f $($unique_bytessent_smtpext[$address]/1mb)) "@ } $props = $obj_table.ToString().Split("`n")|% {if ($_ -match "(.+)="){$matches[1].trim()}} $stat_recs = @() function time_pipeline { param ($increment = 1000) begin{$i=0;$timer = [diagnostics.stopwatch]::startnew()} process { $i++ if (!($i % $increment)){Write-host “`rProcessed $i in $($timer.elapsed.totalseconds) seconds” -nonewline} $_ } end { write-host “`rProcessed $i log records in $($timer.elapsed.totalseconds) seconds” Write-Host " Average rate: $([int]($i/$timer.elapsed.totalseconds)) log recs/sec." } } foreach ($ht in $hts){ Write-Host "`nStarted processing $ht" get-messagetrackinglog -Server $ht -Start "$rundate" -End "$rundate 11:59:59 PM" -resultsize unlimited | time_pipeline |%{ if ($_.eventid -eq "DELIVER" -and $_.source -eq "STOREDRIVER"){ if ($_.messageid -match $mbx_rgx -and $_.sender -match $dom_rgx) { $total_msgsent[$_.sender] += $_.recipientcount $total_bytessent[$_.sender] += ($_.recipientcount * $_.totalbytes) $total_msgsent_exch[$_.sender] += $_.recipientcount $total_bytessent_exch[$_.sender] += ($_.totalbytes * $_.recipientcount) foreach ($rcpt in $_.recipients){ $exch_addrs[$rcpt] ++ $msgrec[$rcpt] ++ $bytesrec[$rcpt] += $_.totalbytes $msgrec_exch[$rcpt] ++ $bytesrec_exch[$rcpt] += $_.totalbytes } } else { if ($_messageid -match $messageid_rgx){ foreach ($rcpt in $_.recipients){ $msgrec[$rcpt] ++ $bytesrec[$rcpt] += $_.totalbytes $msgrec_smtpext[$rcpt] ++ $bytesrec_smtpext[$rcpt] += $_.totalbytes } } } } if ($_.eventid -eq "RECEIVE" -and $_.source -eq "STOREDRIVER"){ $exch_addrs[$_.sender] ++ $unique_msgsent[$_.sender] ++ $unique_bytessent[$_.sender] += $_.totalbytes if ($_.recipients -match $dom_rgx){ $unique_msgsent_exch[$_.sender] ++ $unique_bytessent_exch[$_.sender] += $_.totalbytes } if ($_.recipients -notmatch $dom_rgx){ $ext_count = ($_.recipients -notmatch $dom_rgx).count $unique_msgsent_smtpext[$_.sender] ++ $unique_bytessent_smtpext[$_.sender] += $_.totalbytes $total_msgsent[$_.sender] += $ext_count $total_bytessent[$_.sender] += ($ext_count * $_.totalbytes) $total_msgsent_smtpext[$_.sender] += $ext_count $total_bytessent_smtpext[$_.sender] += ($ext_count * $_.totalbytes) } } if ($_.eventid -eq "expand"){ $dl[$_.relatedrecipientaddress] ++ } } } foreach ($address in $exch_addrs.keys){ $stat_rec = (new-object psobject -property (ConvertFrom-StringData (&$obj_table))) $stat_recs += $stat_rec | select $props } $stat_recs | export-csv $outfile -notype if (Test-Path $dl_stat_file){ $DL_stats = Import-Csv $dl_stat_file $dl_list = $dl_stats |% {$_.address} } else { $dl_list = @() $DL_stats = @() } $DL_stats |% { if ($dl[$_.address]){ if ([datetime]$_.lastused -le [datetime]$rundate){ $_.used = [int]$_.used + [int]$dl[$_.address] $_.lastused = $rundate } } } $dl.keys |% { if ($dl_list -notcontains $_){ $new_rec = "" | select Address,Used,Since,LastUsed $new_rec.address = $_ $new_rec.used = $dl[$_] $new_rec.Since = $rundate $new_rec.lastused = $rundate $dl_stats += @($new_rec) } } $dl_stats | Export-Csv $dl_stat_file -NoTypeInformation -force Write-Host "`nRun time was $(((get-date) - $today).totalseconds) seconds." Write-Host "Email stats file is $outfile" Write-Host "DL usage stats file is $dl_stat_file" #Contact information #[string](0..33|%{[char][int](46+("68655249535163665255626218535564706851627055 5358646562655775 0645570").substring(($_*2),2))})-replace " "
ايضا بوسعك استخدام Exchange Server Profile Analyzer وهي عباره عن اداة بوسعها ان تظهر لك تقارير مرتبه
Microsoft Exchange Server Profile Analyzer (64 bit)
https://www.microsoft.com/download/en/details.aspx?amp;displaylang=en&id=10559
Microsoft Exchange Server Profile Analyzer (32 bit)
https://www.microsoft.com/download/en/details.aspx?displaylang=en&id=16088
مشكوررر عزيزي
اتوقع انه السايت نافع جدا
حيث انه لابد من استخدام سكربت لهذا الغرض
لكن عمل سكربت غير معروف على سيرفرات الشركه مخيفه نوعا ما
انا شفت هاد السكربت بس مش عارف ازا يمكن استخدامه بصراحه
Reporting on e-mail messages sent and received yesterdayUsing PowerShell scripts it’s possible to use the message tracking logs to create reports. This example will get the messages sent and received on the previous day for a group of mailboxes in a specific database.# Get the start date for the tracking log search$Start = (Get-Date -Hour 00 -Minute 00 -Second 00).AddDays(-1)
# Get the end date for the tracking log search
$End = (Get-Date -Hour 23 -Minute 59 -Second 59).AddDays(-1)
# Declare an array to store the results
$Results = @()
# Get the SEND events from the message tracking logs
$Sent = Get-MessageTrackingLog -Server EXCHANGE01 -EventID SEND -Start $Start -End $End-resultsize unlimited
# Get the RECEIVE events the message tracking logs
$Received = Get-MessageTrackingLog -Server EXCHANGE01 -EventID RECEIVE -Start $Start -End $End -resultsize unlimited
# Get the mailboxes we want to report on
$Mailboxes = Get-Mailbox -Database "EXCHANGE01\SG1\DB1"
# Set up the counters for the progress bar
$Total = $Mailboxes.Count
$Count = 1
# Sort the mailboxes and pipe them to a For-Each loop
$Mailboxes | Sort-Object -Property DisplayName | ForEach-Object {
# Update the progress bar
$PercentComplete = $Count / $Total * 100
Write-Progress -Activity "Message Tracking Log Search" -Status "Processing mailboxes" -percentComplete $PercentComplete
# Declare a custom object to store the data
$Stats = "" | Select-Object Name,Sent,Received
# Get the email address for the mailbox
$Email = $_.WindowsEmailAddress.ToString()
# Set the Name property of our object to the mailbox's display name
$Stats.Name = $_.DisplayName
# Set the Sent property to the number of messages sent
$Stats.Sent = ($Sent | Where-Object { ($_.EventId -eq "SEND") -and ($_.Sender -eq$email) }).Count
# Set the Received property to the number of messages received
$Stats.Received = ($Received | Where-Object { ($_.EventId -eq "RECEIVE") -and($_.Recipients -match $email) }).Count
# Add the statistics for this mailbox to our results array
$Results += $Stats
# Increment the progress bar counter
$Count += 1
}
# Output the results
$Results
ارجو الاستفادة من خبرتك
اخ اسامه هل يمكن ارفاق السكربن في ملف لأسهوله الايضاح لو سمحت
مشكور بسمك اللهم
لو كان السكربت من نوع فيجول بيسك سكربت يكون استخدامه من خلال الايعاز
CSCRIPT FileName.VBS
وبالعاده نضع الناتج في ملف TXT لسهوله القراءه لاحقا فيكون الايعاز كاملا
CSCRIPT FileName.VBS > C:\Result.TXT
وفي حال كان السكربت PowerShell فيكون الايعاز كاملا كالاتي
FileName.PL1 > C:\Result.TXT/.
على شرط ان يكون الExecution poliy بحاله unrestricted
وممكن تغييره من خلال الايعاز
Set-executionpolicy unrestricted
وطبعا بالامكان وضع السكربت في كروب بولسي في startup ويبقى شغال حسب محتويات السكربت ومواعيد اصداره التقارير لكن لو كان السكربت من نوع باور شيل فقبل ان يتم تقبله في الكروب بولسي يجب عمل Import لTemplate ال powersell في الكروب بولسي مانجر
لكن نصيحه لاتنفذ سكربت معين ان لم تكن تعلم تماما ماذا يفعل
لانه بامكاني مثلا بسطر واحد ان امحو كافه المدخلات في الاكتف دايركتوري
اتمنى تكون هذه المعلومات قد افادتك
على فكره السكربت الذي تم وضعه هنا في المشاركتين هو من نوع باور شيل
مش عارف كيف اضيف بالمرفقات ,, عموما ,
اخ عمار السكربت اللي وضعته ممتاز جدا ,, وراح يعطيك نتيجة ليوم امس لكل المستخدمين انا جربته وبشكل مرتب وداخل البور شيل نفسها ,,,, لكن عليك طبعا تعدل اسم السيرفر الموجود هنا هو exchnage 01 غيره الى اسم السيرفر الموجود لديك ,, وايضا غير اسم الداتا بيس لاتنسى ,,, ( ممكن تشطب الباث كامل وخلي الاسم كافي ) ,, وممكن تتحكم بالمدة زي ما بدك من الاسطر الاولى ,,
واللي ما بعرف كيف يستخدم السكربت فقط احفظه باسم امتداد .ps1 وطبقه من البورشيل