windows 如何在文件资源管理器中查找和删除重复的Outlook电子邮件与PowerShell?

yftpprvb  于 2023-02-16  发布在  Windows
关注(0)|答案(1)|浏览(226)

请原谅我,我对PowerShell几乎没有经验,但我知道理论上我需要做什么。
我收到了一份21,000封Outlook电子邮件的列表,并被告知要删除重复邮件。服务器不知何故上传了这些邮件。邮件的主题是一个随机生成的字符串,所以是唯一的。我需要根据邮件大小删除重复邮件,并手动打开邮件检查内容是否相同。而不是目测它们并手动比较它们,这将花费我大约25年的时间,哈哈,有谁知道如何在PowerShell中执行此操作吗?
例如,逐行遍历Outlook文件。如果一个文件大小与前一个匹配,打开两封电子邮件。并将第一行电子邮件与两封电子邮件进行比较。如果它们在文件大小和内容方面都匹配,删除一封电子邮件。当然,这不会太难做到吗?请帮助我,我无法理解看21 k电子邮件!!
我已经打开了powershell,我导航到托管21 k Outlook电子邮件的目录。请有人能帮帮我吗?我知道我需要一些循环在那里,对于21 k文件,它不会很快,但目测他们,并手动做它将需要更长的时间,手动做它的想法是给我颤抖...
谢谢!非常感谢!
我在powershell和导航到托管21 k电子邮件的目录。我现在需要找出如何遍历通过行,找到匹配的大小和比较内容,如果两者都是真的,然后删除一个文件。我不是一个程序员,我不想搞砸了随机翼它。

mrzz3bfm

mrzz3bfm1#

我不确定我理解了所有的事情,但这可能会帮助你:

$Outlook = New-Object -ComObject Outlook.Application
$Namespace = $Outlook.GetNamespace("MAPI")
$Folder = $Namespace.GetDefaultFolder(6) # 6 is the index for the Inbox folder

$Emails = $Folder.Items
$Emails.Sort("[ReceivedTime]", $true)

$PreviousEmail = $null
foreach ($Email in $Emails) {
    if ($PreviousEmail -ne $null -and $Email.Subject -eq $PreviousEmail.Subject -and $Email.ReceivedTime -eq $PreviousEmail.ReceivedTime) {
        Write-Host "Deleting duplicate email with Subject:" $Email.Subject "and Received Time:" $Email.ReceivedTime
        $Email.Delete()
    }
    $PreviousEmail = $Email
}

要运行此方法,您需要将目录更改为outlook文件位置。您可以使用“cd C:\PATH”或“Set-Location C:\PATH”。例如:

cd C:\Users\MyUserName\Documents\Outlook\

给予看,让我知道是否工作或它的错误了。你可能需要调整一些行,我没有在我的电脑上测试展望。
另外,请在运行脚本之前备份/复制文件夹,以防它删除不应该删除的电子邮件。

相关问题