【发布时间】:2018-02-17 20:00:13
【问题描述】:
我正在尝试运行一个 PowerShell 脚本,该脚本会打开 Outlook PST,并列出所有目录以及每个目录中的电子邮件数量。当我第一次尝试时,它运行良好,但当我修改脚本时它最终崩溃了。
此时,即使我恢复到原始脚本,我也无法让它工作。问题似乎是当脚本尝试设置 $PST(附件的第 56 行)时,它为空。然后我收到一条错误消息,指出由于空值表达式而存在问题。
You cannot call a method on a null-valued expression.
At H:\users\michael\my documents\~mga outlook pst email\PST Number of Emails.pst:53 char:27
+ $root = $PST.GetRootFolder <<<< <>
+ CategiryUbfi : InvalidOperation: (GetRootFolder:String) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
代码可以看这里:https://pastebin.com/embed_js/hGDZwhDd这是https://gallery.technet.microsoft.com/office/Count-number-of-emails-in-61a2748e的轻微增强
我认为问题在于下面的行没有产生所需的值:
$PST = $objnamespace.stores | ? { $_.FilePath -eq $strPSTPath }
}
如果我知道 $PST 应该是什么,我可以将其硬编码为临时修复,但我不知道代码试图做什么。 $PST 是变量还是对象?
可能相关也可能不相关的是,在运行脚本几次后,会出现几个新文件,并带有 PST 文件名的变体。如果只是删除,脚本会挂在较早的位置。为了阻止脚本查找这些文件,我告诉 Outlook 名称与基本 PST 文件相同。这似乎可行,但同样出现“$PST 为空”相关错误。
如何修复/破解?
【问题讨论】:
标签: powershell outlook pst