In einem Projekt zur Mailmigration von Exchange OnPrem in die Microsoft Cloud zu Exchange Online, wurden einige Mails als .eml Datei exportiert. Später mussten diese manuell Kontrolliert und erneut zugestellt werden. Dafür wurden die mit nachfoglendem Script rekrusiv aus einem Verzeichnis und dessen Unterverzeichnisse durchsucht und folgende Informationen:
- X-Sender
- From
- Subject
- To
- X-MS-Exchange-Organization-SCL
In eine Excel .csv Datei geschrieben / exportiert, sodass dann in Excel weiter gefiltert werden konnte.
Hier das entsprechende Powershell Script zum rekrusiven durchsuchen der .eml Dateien und auswerten dieser mit anschließender Erstellung einer Excel .CSV Datei:
<#
erstellt am 21.02.2022
liest alle .eml Dateien aus einem Verzeichnis und wertet diese aus
#>
$CSVOutFile = "C:\PF-Exports\pf-eml-index.csv"
$newCSV = {} | Select "X_Sender","From","Subject","To","SCL","File","Size" | Export-Csv $CSVOutFile -NoTypeInformation -Encoding UTF8
$emlPath="C:\PF-Exports\Mailexports"
$countItems = Get-ChildItem $emlPath -Recurse |measure
$aFiles = Get-ChildItem $emlPath -Recurse
# extract relevant Informations
$RegExXSender = '^x-sender:'
$RegExFrom = '^from:'
$RegExSubject = '^subject:'
$RegExTo = '^to:'
$RegExSCL = 'X-MS-Exchange-Organization-SCL:'
$CSVFile = Import-CSV $CSVOutFile
$i = 0;
foreach( $FileInfo IN $aFiles)
{
# Write-Host $FileInfo.FullName
$CSVFile.X_Sender = (Get-Content $FileInfo.FullName | Select-String $RegExXSender).ToString().Replace("X-Sender:","")
$CSVFile.From = (Get-Content $FileInfo.FullName | Select-String $RegExFrom).ToString().Replace("From:","")
$CSVFile.Subject = (Get-Content $FileInfo.FullName | Select-String $RegExSubject).ToString().Replace("Subject:","")
$CSVFile.To = (Get-Content $FileInfo.FullName | Select-String $RegExTo).ToString().Replace("To:","")
$CSVFile.SCL = (Get-Content $FileInfo.FullName | Select-String $RegExSCL).ToString().Replace("X-MS-Exchange-Organization-SCL:","")
$CSVFile.File = $FileInfo.FullName.Replace($emlPath,"")
$CSVFile.Size = $FileInfo.Length
# write to CSV
if($i=0)
{
# write 1-Line
$CSVFile | Export-Csv $CSVOutFile
}else{
# append all after 1-Line
$CSVFile | Export-Csv $CSVOutFile -Append
}
}
Thats it…Have Fun!
Interessiert in verschiedenste IT Themen, schreibe ich in diesem Blog über Software, Hardware, Smart Home, Games und vieles mehr. Ich berichte z.B. über die Installation und Konfiguration von Software als auch von Problemen mit dieser. News sind ebenso spannend, sodass ich auch über Updates, Releases und Neuigkeiten aus der IT berichte. Letztendlich nutze ich Taste-of-IT als eigene Dokumentation und Anlaufstelle bei wiederkehrenden Themen. Ich hoffe ich kann dich ebenso informieren und bei Problemen eine schnelle Lösung anbieten. Wer meinen Aufwand unterstützen möchte, kann gerne eine Tasse oder Pod Kaffe per PayPal spenden – vielen Dank.