2
我在PS 4中编写了一个脚本,用于读取Outlook文件夹的内容,查找未读电子邮件,处理它们,然后将它们移动到另一个文件夹中。这个脚本很好用,直到PS 5被推送到我的工作站。现在,我得到以下错误:访问PowerShell中的Outlook文件夹5
Error while invoking [PROPERTYGET, DISPID(0)]. Could not find member. At U:\Powershell\Scripts\Outlook - Process Emails.ps1:214 char:7 + $($folger.Items)[$i].Subject + ~~~~~~~~~~~~~~~~~~~ + CategoryInfo : OperationStopped: (:) [], MissingMemberException + FullyQualifiedErrorId : System.MissingMemberException
这里是代码的主要块:
Add-Type -assembly "Microsoft.Office.Interop.Outlook"
$Outlook = New-Object -ComObject Outlook.Application
$NameSpace = $Outlook.GetNameSpace("MAPI")
$folder = $NameSpace.Folders.Item("Scans").Folders.Item("Results")
for ($i = ($folder.Items.Count - 1); $i -ge 0; $i--)
{
if ($($folder.Items)[$i].UnRead) # It breaks on this line
{
# Do stuff
}
}
两个问题:
1)PS 4和PS 5之间是什么改变导致此?没有什么可以在PS 5的发行说明中跳出来。
2)我能做些什么来使我的脚本恢复运行而无需运行?
这很有趣。我不知道v4和v5之间会有什么变化来改变它,但我认为原始版本一直是错误的。可能是一个已修复的错误? – briantist
我最近在Outlook中看到过类似的东西,但我使用了select -index来解决这个问题。 –
@briantist,我模仿我的原代码关闭的这段代码发现SO: http://stackoverflow.com/a/24829429/6679564 这里TheMadTechnician使用一组额外的$和括号,但我从来没有一定的为什么。 – Tchotchke