gpt4 book ai didi

powershell - 从特定 Outlook 文件夹中最近收到的电子邮件中抓取文件

转载 作者:行者123 更新时间:2023-12-04 18:22:24 26 4
gpt4 key购买 nike

我想搜索特定的 Outlook 文件夹,找到最近发送的电子邮件,并将其附件保存到特定目录。

我写了下面的脚本,但它不起作用。有人可以建议需要更改哪些内容才能使其正常工作吗?

另外 - 在哪里可以找到我可以在 PowerShell 中使用的特定于 Outlook 和 Office 的方法和属性的列表?我尝试使用谷歌搜索,但找不到它的官方 MSDN 页面。

#file path
$filepath = “C:\folder”
$account = "JonDoe@company.com"

#set outlook to open
$o = New-Object -comobject outlook.application
$n = $o.GetNamespace(“MAPI”)


$Account = $n.Folders | ? { $_.Name -eq $account };
$f = $Account.Folders | ? { $_.Name -match 'FolderNameToSearch' };


$date = $f.Items| Select-Object -Property ReceivedTime | Sort-Object ReceivedTime -Descending | Select-Object -Index 0

#Write-Host $date


$f.Items | foreach
{
if ($_.ReceivedTime -match $date )
{
$_.attachments | foreach
{
#Write-Host $_.filename
$a = $_.filename
$_.saveasfile((Join-Path $filepath $a))
}
}
}

编辑 2014 年 3 月 4 日 - 我单步执行了脚本,我相信它在 $_.ReceivedTime -match $date

上失败了

我添加了以下代码来测试电子邮件 ReceivedTime 日期戳与 $date 存储的日期戳的值:

Write-Host "The date I am looking for is $date"

$f.Items | foreach {
Write-Host $_.ReceivedTime
}

这是输出的一部分:

The date I am looking for is @{ReceivedTime=03/04/2014 03:16:08}
3/4/2014 3:16:08 AM

即使日期相同,数据类型也不同。将 $date 转换为日期时间或相反的最优雅方法是什么?

最佳答案

首先,你太努力了。您在电子邮件中循环两次以查找完全相同的电子邮件,这是多余的。二、Get-Date <DateTime Object/DateTime String>是你的 friend ,但你甚至不需要它。如果您真的、真的、真的想要对电子邮件进行排序并选择第一封电子邮件的日期/时间,然后根据那个日期/时间过滤它们,我想您可以,这就是您想要的:

if ((get-date $_.ReceivedTime) -eq (get-date $date))

我认为更好的解决方案是替换:

$date = $f.Items| Select-Object -Property ReceivedTime | Sort-Object ReceivedTime -Descending | Select-Object -Index 0

与:

$email = $f.Items| Sort-Object ReceivedTime -Descending | Select-Object -First 1

然后你可以这样做:

Write-Output "Last email received at $($email.receivedtime), attached file(s) are: (if any)
$email.attachments|%{Write-Output $_.filename}

$email.attachments|%{$_.saveasfile((join-path $folder $_.filename))

我个人会添加 If($email.attachments.count -gt 0){Do Stuff}else{Write-Output "Latest email at $($email.receivedtime) has no attachments!"}钻进去。

关于powershell - 从特定 Outlook 文件夹中最近收到的电子邮件中抓取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22159170/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com