#requires -version 2 <# .DESCRIPTION NAME: Get-MessageFromFile.ps1 AUTHOR: James Vierra , Designed Systems & Services DATE : 8/20/2011 VERSION: .1 .SYNOPSIS List the headers of an email message save in a MSG file. .EXAMPLE Get-MessageFromFile 'c:\scripts\message.msg' Get-MessageFromFile 'c:\scripts\message.msg' -verbose .LINK http;//www.designedsystemsonline.com/upload/Ger-MessageFromFile.ps1 #> Function Get-MessageFromFile{ Param( [Parameter( ValueFromPipeLine=$true, Mandatory=$true, Position=0, HelpMessage='Enter path to MSG file' )][string]$filename ) process{ if(-not(Test-Path $filename)){ Write-Host 'File not found!' -ForegroundColor red -BackgroundColor white return #emptyhanded } $stmMSGFile=New-Object -com ADODB.Stream $stmMSGFile.Charset="ascii" $stmMSGFile.Type=2 #adTypeText $stmMSGFile.Open() $stmMSGFile.LoadFromFile( $filename) [void]$stmMSGFile.ReadText(-1) #adReadAll $iMsg=New-Object -com CDO.Message $iMsg.DataSource.OpenObject($stmMSGFile, '_Stream') Foreach($f in $iMsg.Fields){ if($f.Name -like '*mailheader*'){ New-Object PSObject -Property @{URN=$f.Name; Value=$f.UnderLyingValue} }else{ Write-Verbose ('Skipping field: ' + $f.Name) } } } } Get-MessageFromFile