我正在尝试将具有特定名称的文件附件从共享邮箱中的文件夹传输到计算机上的目录。
我的脚本如下:
#file path
$filepath = “c:\test”
$account = "sharedMailbox@company.com"
#date string to search for in attachment name
$date = Get-Date -Format yyyyMMdd
#set outlook to open
$o = New-Object -comobject outlook.application
$n = $o.GetNamespace(“MAPI”)
$Account = $n.Folders | ? { $_.Name -eq $account };
$f = $Account.Folders | ? { $_.Name -match 'Folder Containing Target Files' };
#now loop through them and grab the attachments
$f.Items | foreach {
$_.attachments | foreach {
Write-Host $_.filename
$a = $_.filename
If ($a.Contains($date)) {
$_.saveasfile((Join-Path $filepath $a))
}
}
}
我收到以下错误:You cannot call a method on a null-valued expression.
现在,当我从脚本中删除以下块时,它不会产生错误,但它也不会记录任何文件名。这是错误的,因为子文件夹的确包含一个满足$date
值的文件的电子邮件:
$a = $_.filename
If ($a.Contains($date)) {
$_.saveasfile((Join-Path $filepath $a))
}
这让我觉得我没有成功连接到邮箱。
脚本中是否需要更改某些内容才能成功传输此共享邮箱中的文件?我对邮箱有读/写/删除权限。
答案 0 :(得分:0)
我重新启动了Outlook,上面的脚本现在可以运行了。我想这是因为我今天为共享邮箱中的附件创建了一个传入电子邮件的文件夹,并且在Outlook重新打开之前,新文件夹在某种程度上没有注册。