2016-09-12 110 views
-1

稍微優先。Powershell在Outlook中的子文件夾中保存附件

在我的收件箱我有叫子文件夾的一個 這裏面是從別人一封電子郵件,呼籲One.pdf 在我的收件箱的附件我有一個叫兩個子文件夾裏面 這是從別人一封電子郵件,呼籲附件Two.pdf 在我的收件箱中,我有一個名爲Own的子文件夾,我有一個名爲Three的子文件夾。 這裏面是從別人一封電子郵件,呼籲Three.pdf 在我的收件箱我上午電子郵件與所謂Four.pdf

Inbox 
-----One 
--------Three 
-----Two 

仍與我的附件附件? :)

我有要求做以下事情。

我需要通過收件箱解析並找到.PDF附件並將其保存到驅動器上的其他位置。 然後,我需要解析收件箱的子文件夾。如果我找到一個.pdf,我需要做兩件事。

我需要檢查文件夾是否存在,如果不創建它。 我需要將該子文件夾中的.PDF保存到我剛剛創建的文件夾中。

目前我可以創建子文件夾。

我的問題是我無法在每個子文件夾中創建正確的文件。事實上,現在只能創建four.pdf,我可以在每個子文件夾中創建。

目前我正在使用此代碼。

$O=0 
$Obj = New-Object -comobject outlook.application 
$Name = $Obj.GetNamespace(「MAPI」) 
$Mail = $Name.pickfolder() 
$Path = "C:\Attached\" 

$SubFolder = { 
    param(
     $currentFolder 
    ) 
foreach ($item in $currentFolder.Folders) { 
$Mail.Items | ForEach { 
    $O=$O+1 
    $_.Attachments | foreach { 
     $item.FolderPath 
     & $SubFolder $item 
     } 
    } 
} 
} 


$Walk = & $SubFolder $Mail 

ForEach ($Fo in $Walk){ 
    $Fo.Items | ForEach { 
    $O=$O+1 
    $_.Attachments | foreach { 
    $Sub = $Fo 
    $Pos = $Sub.IndexOf("\") 
    $LeftPart = $Sub.Substring($Pos+28) 
    $FilePath = $Path + $LeftPart + "\" 

    If ($_.filename -like "*.PDF") { 
    $_ 
     If (!(Test-Path -path $FilePath)) 
      { 
      $Dest = New-Item $FilePath -type directory 
      } 
      $_.saveasfile((Join-Path $FilePath $_.filename)) 
      } 

     } 
    } 
} 

這允許選擇Outlook文件夾,然後什麼也不做。如果我將$ Fo.Items更改爲$ Mail.items,它將創建文件夾和four.pdf。我知道$ Fo並不是我想要的,但我不確定從這裏取什麼樣的差異。

任何建議請。 謝謝

回答

0

不知道爲什麼我被拒絕了,有興趣知道嗎?

無論如何。我可以爲我的問題解決這個問題。

每個「部分」將深入查看子文件夾級別,構建文件夾結構,然後根據類型保存關鍵字。它絕不是很漂亮,但它做我需要的工作。我已將其發佈在此處以供參考。

$O=0 
$Outlook = New-Object -com "Outlook.Application" 
$NameSpace = $Outlook.GetNamespace("MAPI") 
$Mail = $NameSpace.pickfolder() 
$Parent = $Mail.Folders 
$Path = 「C:\Attached\」 


ForEach ($Folder in $Parent) { 
#Parent Folder. 
ForEach($SubFolder in $Folder) { 
#First subfolder. 
    ForEach ($Item in $SubFolder.Items){ 
    $O=$O+1 
    $Sub = $SubFolder.FolderPath 
    $LeftPart = $Sub.Substring($Pos+28) 
    $FilePath = $Path + $LeftPart + "\" 
    If (!(Test-Path -path $FilePath)) 
      { 
      $Dest = New-Item $FilePath -type directory 
      } 

    foreach ($Attach in $Item.Attachments){ 
     If ($Attach.filename -like "*.PDF") { 
      $Attach.saveasfile((Join-Path $FilePath $Attach.filename)) 
      } 
    If ($Attach.filename -like "*.doc*") { 
      $Attach.saveasfile((Join-Path $FilePath $Attach.filename)) 
      } 
     } 
    } 
    ForEach ($SubSubFolder in $SubFolder.Folders){ 
    #Second Subfolder. 
     ForEach ($SubItem in $SubSubFolder.Items){ 
     $1=$1+1 
     $Sub = $SubSubFolder.FolderPath 
     $LeftPart = $Sub.Substring($Pos+28) 
     $FilePath = $Path + $LeftPart + "\" 
     If (!(Test-Path -path $FilePath)) 
       { 
       $Dest = New-Item $FilePath -type directory 
       } 

     foreach ($Attach in $SubItem.Attachments){ 
     If ($Attach.filename -like "*.PDF") { 
       $Attach.saveasfile((Join-Path $FilePath $Attach.filename)) 
       } 
     If ($Attach.filename -like "*.doc*") { 
       $Attach.saveasfile((Join-Path $FilePath  $Attach.filename)) 
        } 
       } 
      } 
     } 
    } 
} 
相關問題