簡體   English   中英

循環瀏覽存檔中 Outlook 郵箱中的文件夾並獲取 powershell 中的所有項目

[英]Looping through folders in outlook Mailbox in archive and get all the items in powershell

我對 powershell 非常陌生,我正在嘗試遞歸獲取存檔中的所有項目以及具有指定郵箱中路徑的子文件夾項目。

我將衷心感謝您的幫助。 正如我之前所說的,我一般不熟悉 powershell 和腳本,所以我的代碼在這段時間里是不可行的。

這是我的代碼:''' Clear-Host Add-Type -assembly "Microsoft.Office.Interop.Outlook" $Outlook = New-Object -comobject Outlook.Application $namespace = $Outlook.GetNameSpace("MAPI")

Write-Host "Démarrage du script . . . ."


$Year = Get-Date -Format ("yyyy")
$YearMonth = Get-Date -Format ("yyyyMM")

$Mailbox = $NameSpace.Folders.Item('spam@exemple.fr').Folders.Item('Archive').Folders.Item($Year).Folders.Item($YearMonth)
$Subfolder1 = $NameSpace.Folders.Item('spam@exemple.fr').Folders.Item('Archive').Folders.Item($Year).Folders.Item($YearMonth).folders.item(1)
$Subfolder2 = $NameSpace.Folders.Item('spam@exemple.fr').Folders.Item('Archive').Folders.Item($Year).Folders.Item($YearMonth).folders.item(2)
$Subfolder3 = $NameSpace.Folders.Item('spam@exemple.fr').Folders.Item('Archive').Folders.Item($Year).Folders.Item($YearMonth).folders.item(3)
$Subfolder4 = $NameSpace.Folders.Item('spam@exemple.fr').Folders.Item('Archive').Folders.Item($Year).Folders.Item($YearMonth).folders.item(4)
  
$Subfolder4sub1 = $NameSpace.Folders.Item('spam@exemple.fr').Folders.Item('Archive').Folders.Item($Year).Folders.Item($YearMonth).folders.item(4).folders.item(1)
  
$Subfolder4sub2 = $NameSpace.Folders.Item('spam@exemple.fr').Folders.Item('Archive').Folders.Item($Year).Folders.Item($YearMonth).folders.item(4).folders.item(2)

$Subfolder4sub3 = $NameSpace.Folders.Item('spam@exemple.fr').Folders.Item('Archive').Folders.Item($Year).Folders.Item($YearMonth).folders.item(4).folders.item(3)


 Write-Host "Traitement des mails . . . ."

 $CSVfolder = "C:\TEMP\datas_spamV3.csv"
 Clear-Content "C:\TEMP\datas_spamV3.csv"

 $headers = "Id;Emplacement;Date;Emetteur;Sujet" | Add-Content -Path $CSVfolder


 $Mailbox.Items | foreach {
                $Id = New-Guid
                $path = $Mailbox.FullFolderPath
                $datas = "$($_.ReceivedTime);$($_.SenderEmailAddress);$($_.Subject)"
                "$Id;$path;$datas" | Add-Content -Path $CSVfolder
    }

 $Subfolder1.Items | foreach {
                $Id = New-Guid
                $path = $Subfolder1.FullFolderPath
                $datas = "$($_.ReceivedTime);$($_.SenderEmailAddress);$($_.Subject)"
                "$Id;$path;$datas" | Add-Content -Path $CSVfolder
    }

$Subfolder2.Items | foreach {
                $Id = New-Guid
                $path = $Subfolder2.FullFolderPath
                $datas = "$($_.ReceivedTime);$($_.SenderEmailAddress);$($_.Subject)"
                "$Id;$path;$datas" | Add-Content -Path $CSVfolder
    }

$Subfolder3.Items | foreach {
                $Id = New-Guid
                $path = $Subfolder3.FullFolderPath
                $datas = "$($_.ReceivedTime);$($_.SenderEmailAddress);$($_.Subject)"
                "$Id;$path;$datas" | Add-Content -Path $CSVfolder
    }

 $Subfolder4sub1.Items | foreach {
                $Id
                $path = $Subfolder4sub1.FullFolderPath
                $datas = "$($_.ReceivedTime);$($_.SenderEmailAddress);$($_.Subject)"
                "$Id;$path;$datas" | Add-Content -Path $CSVfolder
    }

$Subfolder4sub2.Items | foreach {
                $Id = New-Guid
                $path = $Subfolder4sub2.FullFolderPath
                $datas = "$($_.ReceivedTime);$($_.SenderEmailAddress);$($_.Subject)"
                "$Id;$path;$datas" | Add-Content -Path $CSVfolder
    }

$Subfolder4sub2.Items | foreach {
                $Id = New-Guid
                $path = $Subfolder4sub3.FullFolderPath
                $datas = "$($_.ReceivedTime);$($_.SenderEmailAddress);$($_.Subject)"
                "$Id;$path;$datas" | Add-Content -Path $CSVfolder
    }
'''

編輯:我自己找到了解決方案:''' clear-host $outlook = New-Object -Com Outlook.Application $mapi = $outlook.GetNamespace('MAPI') $mailboxRoot = $NameSpace.Folders.Item('spam @mail.fr').Folders.Item('Archive') $yearmonth = Get-Date -Format ("yyyyMM")

    Clear-Content "C:\TEMP\Out_SPAM.csv"
$headers = "Id;Emplacement;Date;Emetteur;Sujet" | Add-Content -Path 
"C:\TEMP\Out_SPAM.csv"

$walkFolderScriptBlockBis = {
    param(
        $currentFolder
    )
     foreach ($item in $currentFolder.Folders) {
                    $item.Items() | Foreach { 
                    $Id = $_.ConversationId
                    $path = $item.FullFolderPath
                    $datas = "$($_.ReceivedTime);$($_.SenderName);$($_.Subject)"
                    "$Id;$path;$datas" | Add-Content -Path "C:\TEMP\Out_SPAM.csv"
                    }
                
            & $walkFolderScriptBlockBis $item
    
    
    }
}

$walkFolderScriptBlock = {
    param(
        $currentFolder,$index
    )
    foreach ($item in $currentFolder.Folders) {
        if($index -lt 3){
            #$item.FolderPath
            $yearmonth = Get-Date -Format ("yyyyMM")
            if ($item.FolderPath.Contains($yearmonth)) {
                & $walkFolderScriptBlockBis $item
                
            }
            $temp = $index + 1
            & $walkFolderScriptBlock $item $temp
          }
    
     }
}
$index = 0
& $walkFolderScriptBlock $mailboxRoot $index

'''

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM