我正在使用以下脚本。通过发件人名称将附件保存在指定的文件夹中效果很好。但是,如果发件人名称不变,则仅保存附件中的1个与所有附件中的一个。我假设这是一个写错误。如何更新下面的脚本,以所有符合过滤条件的附件按实际附件名称而不是发件人名称保存。
$o = New-Object -comobject outlook.application
$n = $o.GetNamespace("MAPI")
$f = $n.PickFolder()
$filepath = "c:\test"
$f.Items| foreach {$SendName = $_.Sendername
$_.attachments|foreach {
$_.filename
If ($_.filename.Contains("pdf")) {
$_.saveasfile((Join-Path $filepath "$SendName.pdf"))}}}`
任何想法都将不胜感激。
答案 0 :(得分:2)
所以让我们在这里跟随兔子洞吧。
我们可以转到Outlook Object Model,并寻找Attachments Object,因为我们看到您正在遍历附件:
$_.attachments|foreach
我们在页面上看到:
包含一组附件对象
所以我们看一下Attachment Object Page,看一下Properties,我们看到FileName有一个属性
因此要按附件名称发送,我们可以这样做:
$o = New-Object -comobject outlook.application
$n = $o.GetNamespace("MAPI")
$f = $n.PickFolder()
$filepath = "c:\test"
$f.Items| foreach {
$FileName= $_.FileName
$_.attachments|foreach {
$_.filename
If ($_.filename.Contains("pdf")) {
$_.saveasfile((Join-Path $filepath "$FileName"))
}
}
}