2016-09-14 5 views
2

Я написал сценарий в PS 4, который будет читать содержимое папки Outlook, находить непрочитанные письма, обрабатывать их, а затем переносить их в другую папку. Этот скрипт отлично работал, пока PS 5 не был перенесен на мою рабочую станцию. Теперь, я получаю следующее сообщение об ошибке:Доступ к папке Outlook в PowerShell 5

Error while invoking [PROPERTYGET, DISPID(0)]. Could not find member. 
At U:\Powershell\Scripts\Outlook - Process Emails.ps1:214 char:7 
+  $($folger.Items)[$i].Subject 
+  ~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : OperationStopped: (:) [], MissingMemberException 
    + FullyQualifiedErrorId : System.MissingMemberException 

Вот основной блок кода:

Add-Type -assembly "Microsoft.Office.Interop.Outlook" 
$Outlook = New-Object -ComObject Outlook.Application 
$NameSpace = $Outlook.GetNameSpace("MAPI") 

$folder = $NameSpace.Folders.Item("Scans").Folders.Item("Results") 

for ($i = ($folder.Items.Count - 1); $i -ge 0; $i--) 
{ 
    if ($($folder.Items)[$i].UnRead) # It breaks on this line 
    { 
     # Do stuff 
    } 
} 

Два вопроса:

1) Что изменилось между PS 4 и PS 5, чтобы вызвать это? Ничего не выскользнуло в примечаниях к выпуску для PS 5.

2) Что я могу сделать, чтобы восстановить подлинность моего сценария без проблем?

ответ

3

Фигурные это на моем собственном ...

if ($($folder.Items)[$i].UnRead) 

Изменен

if ($folder.Items[$i].UnRead) 

Я никогда не был уверен, почему было необходимо дополнительно $ и круглые скобки, но он работал в оригинальной версии, так Я никогда с ним не сталкивался.

+1

Это интересно. Я ничего не знаю о том, что изменилось бы между v4 и v5, чтобы изменить это; но я думаю, что оригинальная версия была неправильной все время. Может быть, ошибка была исправлена? – briantist

+0

В последнее время я видел что-то вроде этого с Outlook, но я использовал select -index, чтобы обойти проблему. –

+0

@briantist, я моделируется мой исходный код от этого кода находится на SO: http://stackoverflow.com/a/24829429/6679564 Здесь TheMadTechnician использует дополнительный набор $ и круглые скобки, но я никогда не был уверен, Зачем. – Tchotchke

Смежные вопросы