我想从名为“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
谢谢!
答案 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
应该是该邮箱的根目录,然后您将获得如上所述的收件箱,或者您要查找的任何文件夹。