![]() |
Find по разным условиям
Написал поиск в Outlook`e по разным условим
Код:
$oOutlook = New-Object -ComObject Outlook.Application Хотел организовать поиск по совпадению двух параметров. логика была такая: найти объект [LastName] = ""$N"" AND [Email1Address] = ""$M"" если объекта с сочетанием таких полей нету продолжаем поиск по следующему сочетанию или [LastName] = ""$N"" AND [Department] = ""$D"" или [Email1Address] = ""$M"" AND [Department] = ""$D"" и т.д. у меня реализованная мной поисковая логика не работает (видимо нельзя так писать, как я это сдела) ошибка: Произошла ошибка при вызове метода, так как [System.__ComObject] не содержит метод с именем "op_Addition". строка:70 знак:19 + $cContactForDel += <<<< $cContacts.Find("[LastName] = ""$N"" AND [Email1Address] = ""$M"" OR [LastName] = ""$N"" AND [Departme nt] = ""$D"" OR [LastName] = ""$N"" AND [JobTitle] = ""$T"" OR [LastName] = ""$N"" AND [CompanyName] =""$C"" OR [Email1Address] = ""$M"" AND [Department] = ""$D"" OR [Email1Address] = ""$M"" AND [JobTitle] = ""$T"" OR [Email1Address] = ""$M"" AND [CompanyNam e] =""$C"" ") } + CategoryInfo : InvalidOperation: (op_Addition:String) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound |
$oMAPIFolder = $oNameSpace.GetDefaultFolder(3)
$cContacts = $oMyMAPIFolder.Items Почему две разные переменные? $cContactForDel - Что за переменная? |
Цитата:
$oMyMAPIFolder исправил на $oMAPIFolder $cContactForDel переменнай в которой хранится объект для дальнейшего удаления его |
Вот теперь,покажите ошибку,которая выдается.
И конакты - GetDefaultFolder(3) - разве не 10? |
да 10, но я удаляю из папки удаленные! папка удаленные - 3
можно показать пример и на папке 10... не пренципиально Все я нашел ошибку, я забыл указать $cContactForDel = @(). (ОПЯТЬ моя невнимательность) поэтому выдавал такую ошибку. Kazun, Я сделал правильно? Или опять же можно проще реализовать? |
Kazun, Хотя я ошибался есть разница при поиске в папке удаленные (3) и в папке контакты (10)
Так как в папке удаленные присутствует много различного радо объектов - письма, папки и контакты. Но не у каждого объекта в этой папке есть свойство [Email1Address] - получается что при поиске в объекте где нет такого поля выдает ошибку: Исключение при вызове "Find" с "1" аргументами: "Свойство "Email1Address" неизвестно." строка:33 знак:42 + $cContactForDel += $oMAPIFolderDel.Find <<<< (" [Email1Address] = ""$M"" ") + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : ComMethodTargetInvocation |
Есть ли способ искать в массиве объектов, если у каждого объекта разный набором свойств?
|
Как вариант отфильтровать,только по заданному типу,скажем Контакт,а дальше использовать операторы сравнения PowerShell,я думаю здесь скорость особо не критична.
|
Время: 02:06. |
Время: 02:06.
© OSzone.net 2001-