如何使用PowerShell定位Outlook子文件夹

3

我正在尝试过滤一个Outlook子文件夹中的大约2000个自动警报。

我需要执行以下步骤:

  1. 解析子文件夹 账户警报锁定
  2. 搜索包含可变用户名的特定短语
  3. 将整个带有可变用户名的短语转储到CSV

示例短语:

Account Name:       jdoe

我已经把所有需要的邮件放在了一个子文件夹中,现在只需要对它们进行分析。

我已经让我的代码可以在收件箱中使用了,但是它无法覆盖子文件夹。

Add-Type -Assembly "Microsoft.Office.Interop.Outlook"
$Outlook = New-Object -ComObject Outlook.Application
$namespace = $Outlook.GetNameSpace("MAPI")

$inbox = $namespace.GetDefaultFolder([Microsoft.Office.Interop.Outlook.OlDefaultFolders]::olFolderInbox)    

$RE = [RegEx]'(?sm)Account Name\s*:\s*(?<AccName>.*?)$.*'

$DebugPreference = 'Continue'

$Data = foreach ($item in $inbox.items) {
    if ($item.body -match $RE) {
        Write-Host "ding "
        [PSCustomObject]@{ AccName = $Matches.AccName }
    }
}

$Data 
$Data | Export-CSv '.\data.csv' -NoTypeInformation
1个回答

2
根据NameSpace.GetDefaultFolder文档:

要返回特定的非默认文件夹,请使用文件夹集合。

而上述引用的Folders集合的文档如下:

使用 Folders(索引),其中索引是名称或索引号,以返回单个 Folder 对象。文件夹名称区分大小写。

您应该能够添加此内容:
$subfolder = $inbox.Folders('Account Alert Lockouts')

并且将你的foreach更改为遍历$subfolder

最初的回答:


1
唉,我花了几个小时研究其他问题,而你的问题却是如此愚蠢简单。我真是个大笨蛋。是的,它立即按照你说的方式工作了。谢谢。 - Ghawblin
哈哈,我也经常遇到这种情况。很高兴我能帮到你! - Lews Therin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接