วิธีส่งออกบันทึก SMTP แบบเต็มใน Office 365


10

ใน Office 365 จะสามารถส่งออกบันทึก SMTP ได้หรือไม่ อาจจะอยู่ใน PowerShell หรือวิธีอื่นใด

เป้าหมายของฉันคือการมีภาพรวมที่สมบูรณ์ของข้อความทั้งหมดที่ส่งจากและไปยังโดเมนที่เฉพาะเจาะจง


a complete overview of all messages send from and to a specific domain คุณรู้ไหมว่าโดยทั่วไปแล้วคุณจะยอมแพ้เมื่อคุณไปที่ "คลาวด์" หากคุณต้องการ / ต้องการการตรวจสอบและการบันทึกอย่างเต็มรูปแบบบริการคลาวด์อาจไม่ใช่สิ่งที่คุณต้องการ
HopelessN00b

3
Office365 มีมากกว่าที่คุณคิดว่า HopelessN00b :-)
ZEDA-NL

คำตอบ:


12

ด้วยการรวม 2 สคริปต์ที่พบที่ไหนสักแห่งทางออนไลน์ฉันก็สามารถหามันได้

นี่คือสคริปต์ที่ทำงานได้

#Accept input parameters 
Param( 
    [Parameter(Position=0, Mandatory=$true, ValueFromPipeline=$true)] 
    [string] $Office365Username, 
    [Parameter(Position=1, Mandatory=$true, ValueFromPipeline=$true)] 
    [string] $Office365Password 
) 

$OutputFile = "DetailedMessageStats.csv" 

Write-Host "Connecting to Office 365 as $Office365Username..." 

#Connect to Office 365 
$SecurePassword = $Office365Password | ConvertTo-SecureString -AsPlainText -Force 
$cred = New-Object System.Management.Automation.PSCredential -ArgumentList $Office365Username, $SecurePassword 
$session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "https://ps.outlook.com/powershell/" -Credential $cred -Authentication Basic -AllowRedirection  
Import-PSSession $session -AllowClobber 

Write-Host "Collecting Recipients..." 

#Collect all recipients from Office 365 
$Recipients = Get-Recipient -ResultSize Unlimited | select PrimarySMTPAddress 
$MailTraffic = @{} 
foreach($Recipient in $Recipients) 
{ 
    $MailTraffic[$Recipient.PrimarySMTPAddress.ToLower()] = @{} 
} 
$Recipients = $null 

#Collect Message Tracking Logs (These are broken into "pages" in Office 365 so we need to collect them all with a loop) 
$Messages = $null 
$Page = 1 
do 
{ 

    Write-Host "Collecting Message Tracking - Page $Page..." 
    $CurrMessages = Get-MessageTrace -StartDate (Get-Date).AddDays(-7) -EndDate (Get-Date)  -PageSize 5000  -Page $Page| Select Received,*Address,*IP,Subject,Status,Size

    if ($CurrMessages -ne $null)
      {
      $CurrMessages | Export-Csv C:\FILE-$PAGE.csv -NoTypeInformation
      }
    $Page++ 
    $Messages += $CurrMessages 


} 
until ($CurrMessages -eq $null) 

Remove-PSSession $session 

สุดยอดสคริปต์! ฉันต้องแก้ไข URL เพื่อเชื่อมต่อกับอินสแตนซ์ของ Office 365 ฉันใช้ข้อมูลที่เชื่อมต่อกับ Exchange Online โดยใช้ PowerShell ระยะไกลเพื่อจัดการการเชื่อมต่อและส่วนที่เหลือของสคริปต์ของคุณเพื่อรับไฟล์
Jason Massey

-1

ฉันทำการเปลี่ยนแปลงเล็กน้อยเพื่อไม่กี่บรรทัดเพื่อรวบรวมบันทึกทั้งหมด

$OutputFile = "c:\temp\SMTPlog"

$CurrMessages | Export-Csv "$($OutputFile)$($Page).csv" -NoTypeInformation

3
สวัสดีฉันสงสัยว่าคุณต้องการแก้ไขคำตอบเพื่อเพิ่มรายละเอียดหรือเพื่อแสดงความคิดเห็นในคำตอบอื่น ๆ หากคุณตั้งใจจะทิ้งไว้เป็นคำตอบที่ฉันแนะนำให้วางสคริปต์ทั้งหมดพร้อมกับการเปลี่ยนแปลงของคุณ ในคำตอบอื่น ๆ ดังนั้นมันจะเป็นคำตอบที่สมบูรณ์
yagmoth555
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.