我想针对Outlook收件箱中的自定义文件夹运行Powershell脚本:
这是我到目前为止的查询:
$outlook = new-object -com Outlook.Application
$outlook.Session.GetDefaultFolder(olFolderCalendar).Parent._Folders("UFMS").Items
但是这给了我错误:
Missing ')' in method call.
At line:1 char:48
+ $newFolder = $outlook.Session.GetDefaultFolder( <<<< olFolderCalendar).Parent._Folders("UFMS").Items
+ CategoryInfo : ParserError: (CloseParenToken:TokenId) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : MissingEndParenthesisInMethodCall
答案 0 :(得分:1)
嗯,这就是我的工作。它可能有点笨拙,但它确实有效。
$Outlook = New-Object -ComObject Outlook.Application
$Namespace = $outlook.GetNameSpace("MAPI")
$MyAcct = $Namespace.Folders | ?{$_.Name -match $env:USERNAME}
$Inbox = $MyAcct.Folders | ?{$_.Name -match "Inbox"}
$UFMS = $Inbox.Folders | ?{$_.Name -match "UFMS"}
这会打开Outlook,获取MAPI命名空间,找到您的帐户(基于您的UserID,因此这假定您的AD帐户名称在您的电子邮件地址中),然后它在收件箱的文件夹中查找,然后查看您的收件箱一个名为UFMS的文件夹。然后,您可以使用$UFMS.Items
迭代该文件夹中的邮件。
加分:值得记住的是,Outlook会将最早的电子邮件项目列为第1项,并以最旧到最新的格式提供这些项目。要从今天开始收到电子邮件,您可以使用For循环,从集合中的最后一项到第一项,并在当前项目太旧时分解。像这样:
[datetime]$StartDate = ([datetime]::now.ToShortDateString())
$TodaysMail = @()
for($i= ($UFMS.Items.count - 1);$i -ge 0;$i--){
$Current = $UFMS.Items.item($i)
if($Current.senton -lt (get-date $StartDate)){break}
$TodaysMail+=$Current
}
$StartDate=
行可能看起来过于复杂,但会使[DateTime]对象等于当天的午夜。