[英]How to get Mailbox size and Archive size in same table - powershell, exchange
[英]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.