使用Powershell,如何访问outlook最高级别的文件夹?

时间:2015-03-03 16:13:49

标签: powershell

我想从名为“FDA UFMS User Provision”的文件夹中获取一些数据,我的PS代码在这里:

$sentMail = $outlook.Session.GetDefaultFolder(6) # == olFolderSentMail
$bigFolder = $sentMail.Parent


$ufms = "FDA UFMS User Provision"


$newufms = $bigFolder.folders.item($ufms)


$newufms.Items | %{ $RESULT=[Regex]::Match($_.TaskSubject, "Request\s\d{6}"); if ($RESULT.Success)

{$RESULT.Value}} | %{$Result=[Regex]::Match($_, "\d{6}"); if($RESULT.Success){$RESULT.Value}} | Out-File C:\Temp

\Powershell_6_digit_Codes.txt -Append

但问题是它正在获取收件箱下的“UFMS”文件夹。但是,我想访问更高级别的“UFMS”文件夹(恰好是共享网络电子邮箱)

在图片中,箭头指向我要访问的电子邮箱,称为“FDA UFMS用户配置”,与“Adel”outlook文件夹保持同一级别:

到目前为止我尝试了什么

$newuf = $outlook.Session.Folders.Item("FDA UFMS User Provision").item

$newuf.Items | | %{ $RESULT=[Regex]::Match($_.TaskSubject,"Request\s\d{6}"); if ($RESULT.Success){$RESULT.Value}} | %{$Result=[Regex]::Match($_, "\d{6}");if($RESULT.Success){$RESULT.Value}} | Out-File C:\Temp\Powershell_6_digit_Codes_ULF.txt -Append

enter image description here

谢谢!

1 个答案:

答案 0 :(得分:1)

获取文件夹非常简单。您只需逐个从根帐户通过文件夹路径向下走。以下是您需要为该文件夹执行的操作:

$Outlook = New-Object -ComObject Outlook.Application
$Namespace = $outlook.GetNameSpace("MAPI")
$MyAcct = $Namespace.Folders | ?{$_.Name -match $env:USERNAME}
$UFMS = $MyAcct.Folders | ?{$_.Name -match "FDA UFMS User Provision"}

这确实假设您的用户名在您的电子邮件地址中,因此如果我的用户名是TMTech,那么我的电子邮件地址将类似于TMTech@awesomesauce.com。

如果你想要一个文件夹,你可以添加一行:

$OtherFldr = $UFMS.Folders | Where{$_.Name -match "Other Folder"}

编辑:好的,我刚刚注意到你说它是一个共享邮箱。在这种情况下,改变我刚才所说的内容...要找到除您自己以外的邮箱,我们需要更改$MyAcct =行。所以它会变成:

$SharedMB = $NameSpace.Folders | Where{$_.Name -match "FDA UFMS User Provision"}

现在$SharedMB应该是该邮箱的根目录,然后您将获得如上所述的收件箱,或者您要查找的任何文件夹。