Powershell - Lagre vedlegg i Outlook
Hvordan lagre vedlegg fra en mappe i Outlook
For å behandle tilsendte data oppstod det et behov for å gå igjennom alle e-poster i en mappe i Outlook og lagre alle vedlegg av en bestemt type. Det ser ikke ut til å være noe innebygd funksjonalitet for dette i Outlook programmet, men heldigvis kan vi relativt enkelt fikse dette selv ved hjelp av Powershell.
I koden under har jeg valgt å legge til et timestamp i forkant av filnavnet i tilfelle det finnes flere vedlegg med samme navn.
$filepath = "C:\Users\Brukernavn\Utvikling\powershell\outlookattachments\downloads"
$fileextension = '.rtf|.txt|.pdf|.doc'
$outlook = New-Object -ComObject Outlook.Application
$mapi = $outlook.GetNameSpace("MAPI")
$mailbox = "fornavn.etternavn@domene.ext"
$mailfolder = "mappenavn"
$inbox = $mapi.Folders.Item($mailbox).Folders.Item($mailfolder)
$emails = $inbox.items
$emails.Count
$inbox
foreach ($email in $emails) {
$timestamp = $email.ReceivedTime.ToString("yyyyMMddhhmmss") + "_"
$email.Attachments | Where-Object {$_.FileName -match $fileextension} | foreach {
$_.FileName
$filename = $_.FileName
$filename = $filename.Insert(0, $timestamp)
$_.saveasfile((Join-Path $filepath $filename))
}
}