Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 输出到CSV时的系统对象_Powershell_Outlook - Fatal编程技术网

Powershell 输出到CSV时的系统对象

Powershell 输出到CSV时的系统对象,powershell,outlook,Powershell,Outlook,我正在运行一些PowerShell,试图从Outlook中发送邮件的用户那里获取曾经发送到的电子邮件地址列表 当我使用“SenderEmailAddress”处理用户收件箱时,它工作得非常好,但当我尝试使用用户发送的邮件中的“To”时,输出返回为系统。\uuu ComObject,我无法将其转换为CSV的字符串/文本 Add-Type -AssemblyName "Microsoft.Office.Interop.Outlook" | Out-Null $Outlook = New-Objec

我正在运行一些PowerShell,试图从Outlook中发送邮件的用户那里获取曾经发送到的电子邮件地址列表

当我使用“SenderEmailAddress”处理用户收件箱时,它工作得非常好,但当我尝试使用用户发送的邮件中的“To”时,输出返回为
系统。\uuu ComObject
,我无法将其转换为CSV的字符串/文本

Add-Type -AssemblyName "Microsoft.Office.Interop.Outlook" | Out-Null

$Outlook = New-Object -ComObject Outlook.Application

$mapi = $Outlook.GetNameSpace("MAPI")

$Items = $Mapi.Folders.Item("UsersMailboxGoesHere").Folders.Item("Sent Items").Items;

$Items | select To | Export-Csv C:\outs\Export.csv

谢谢。让我找到了一些更好的文档。这很有效

 $Items |
     select Recipients |
     foreach {$_.Recipients} |
     select Address |
     Export-Csv 'C:\outs\Export.csv'

To
是一个包含多个属性的对象,其中
ToString()
仅返回其类型。您需要进一步深入研究从
$Items.to
中选择哪些内容,因此我需要它包含的所有内容。根据文档()的说明,to返回Outlook项目收件人的显示名称的分号分隔字符串列表,这就是我需要的-整个字符串查看
$Items.to | Get Member
。VB和powershell不一样。作为一个改进点:
$Items.Recipients.Address | Export Csv-Path C:\outs\Export.Csv
自动枚举是一种可怕的药物。请注意,成员枚举需要powershell v3或更高版本。为了简化代码,您可以将
selectrecipients | foreach{$\ Recipients}
替换为
selectobject-expandrecipients
。您可能还需要将参数
-NoTypeInformation
添加到
导出Csv