Powershell - Lagre vedlegg i Outlook

Powershell - Lagre vedlegg i Outlook

Sun 09 April 2023

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))
    }
}
Tagged as : powershell outlook