Powershell Can';无法从读取的回执中获取发件人的电子邮件地址

Powershell Can';无法从读取的回执中获取发件人的电子邮件地址,powershell,outlook,Powershell,Outlook,我正在使用此处发布的代码尝试在PowerShell中检索发件人电子邮件地址表单读取收据。对于某些电子邮件,这可以正常工作,但对于其他电子邮件,它不工作 在Outlook中,我可以清楚地看到它来自谁,但PowerShell返回一个空白单元格 需要帮忙吗 function Get-OutlookInBox { Add-Type -AssemblyName "Microsoft.Office.Interop.Outlook" | Out-Null $olFolders = "Micro

我正在使用此处发布的代码尝试在PowerShell中检索发件人电子邮件地址表单读取收据。对于某些电子邮件,这可以正常工作,但对于其他电子邮件,它不工作

在Outlook中,我可以清楚地看到它来自谁,但PowerShell返回一个空白单元格

需要帮忙吗

function Get-OutlookInBox {
    Add-Type -AssemblyName "Microsoft.Office.Interop.Outlook" | Out-Null
    $olFolders = "Microsoft.Office.Interop.Outlook.olDefaultFolders" -as [type]
    $Outlook = New-Object -ComObject Outlook.Application
    $Namespace = $Outlook.GetNameSpace("MAPI")
    $folder = $NameSpace.pickfolder()
    $Folder.Items | Get-Member
    $Folder.Items |
        Select-Object Subject, SenderName, SenderEmailAddress, CreationTime,
            ReceivedTime, Final-recipient, UserProperties, ItemProperties,
            MAPIOBJECT, ReceivedByName, Recipents, Sender, SentOn,
            SentOnBehalfOfName |
        Export-CSV -NoTypeInformation xxx\Trial.csv
}

首先,确保指定对象存在并且无法检索特定对象。例如,我注意到,
Final recipient
,它在OOM中没有任何相应的属性

注意,您需要遍历文件夹中的所有项目并处理邮件项目,因为其他Outlook项目可能没有指定要导出的属性。因此,您可以在执行任何操作之前检查
属性

更好的解决方案是使用Items类的/或方法来获取与您的条件相对应的项。请在以下文章中阅读有关这些方法的更多信息:


你的意思是,它在其他计算机上不工作?是否安装了正确版本的PowerShell?请()回答您的问题,并提供有关此错误的更多详细信息。乍一看,我发现您的代码中有输入错误<代码>收件人应该是
收件人
。接下来,您还可以在Select Object statement中声明
MAPIOBJECT
,但该属性已弃用。是否确定文件夹中的所有项目都是MailItem对象,并且文件夹中不包含任何PostItem对象?它们有不同的属性。有关MailItems,请参见此处;有关PostItem对象,请参见