Я написал сценарий в 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) Что я могу сделать, чтобы восстановить подлинность моего сценария без проблем?
Это интересно. Я ничего не знаю о том, что изменилось бы между v4 и v5, чтобы изменить это; но я думаю, что оригинальная версия была неправильной все время. Может быть, ошибка была исправлена? – briantist
В последнее время я видел что-то вроде этого с Outlook, но я использовал select -index, чтобы обойти проблему. –
@briantist, я моделируется мой исходный код от этого кода находится на SO: http://stackoverflow.com/a/24829429/6679564 Здесь TheMadTechnician использует дополнительный набор $ и круглые скобки, но я никогда не был уверен, Зачем. – Tchotchke