Как изменить скрипт для сохранения вложений по имени файла, а не по имени отправителя? - PullRequest
0 голосов
/ 29 января 2019

Я использую скрипт ниже.Он хорошо работает для сохранения вложений по имени отправителя в указанной папке.Однако, если имена отправителей постоянны, сохраняется только 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"))}}}`

Буду признателен за любые идеи.

1 Ответ

0 голосов
/ 29 января 2019

Итак, давайте следуем за кроличьей норе.

Мы можем перейти к Объектной модели Outlook и найти Объект вложений , потому что мы видим, что вы перебираетеприкрепленные файлы:

$_.attachments|foreach

Мы видим на странице:

Содержит набор объектов Attachment

Итак, посмотрим на Страница объекта вложения , посмотрите на Свойства, и мы увидим, что есть свойство для 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"))
        }
    }
}
...