|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Find по разным условиям |
|
PowerShell - Find по разным условиям
|
Пользователь Сообщения: 77 |
Написал поиск в Outlook`e по разным условим
$oOutlook = New-Object -ComObject Outlook.Application $oNameSpace = $oOutlook.GetNamespace("MAPI") $oMAPIFolder = $oNameSpace.GetDefaultFolder(3) $cContacts = $oMAPIFolder.Items # Сам поиск $cContactForDel = @() $del | % { $N=$_.Name; $M=$_.Mail; $D=$_.Department; $T=$_.Title; $C=$_.Company Write-Verbose "Удаляем $N $M $D $T $C" $cContactForDel += $cContacts.Find("[LastName] = ""$N"" AND [Email1Address] = ""$M"" OR [LastName] = ""$N"" AND [Department] = ""$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 [CompanyName] =""$C"" ") } Хотел организовать поиск по совпадению двух параметров. логика была такая: найти объект [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 |
|
Отправлено: 10:16, 03-02-2012 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать $oMAPIFolder = $oNameSpace.GetDefaultFolder(3)
$cContacts = $oMyMAPIFolder.Items Почему две разные переменные? $cContactForDel - Что за переменная? |
Отправлено: 11:11, 03-02-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 77
|
Профиль | Отправить PM | Цитировать Цитата Kazun:
$oMyMAPIFolder исправил на $oMAPIFolder $cContactForDel переменнай в которой хранится объект для дальнейшего удаления его |
|
Отправлено: 12:05, 03-02-2012 | #3 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать Вот теперь,покажите ошибку,которая выдается.
И конакты - GetDefaultFolder(3) - разве не 10? |
Отправлено: 12:21, 03-02-2012 | #4 |
Пользователь Сообщения: 77
|
Профиль | Отправить PM | Цитировать да 10, но я удаляю из папки удаленные! папка удаленные - 3
можно показать пример и на папке 10... не пренципиально Все я нашел ошибку, я забыл указать $cContactForDel = @(). (ОПЯТЬ моя невнимательность) поэтому выдавал такую ошибку. Kazun, Я сделал правильно? Или опять же можно проще реализовать? |
|
Последний раз редактировалось dosperados, 03-02-2012 в 12:34. Отправлено: 12:25, 03-02-2012 | #5 |
Пользователь Сообщения: 77
|
Профиль | Отправить PM | Цитировать Kazun, Хотя я ошибался есть разница при поиске в папке удаленные (3) и в папке контакты (10)
Так как в папке удаленные присутствует много различного радо объектов - письма, папки и контакты. Но не у каждого объекта в этой папке есть свойство [Email1Address] - получается что при поиске в объекте где нет такого поля выдает ошибку: Исключение при вызове "Find" с "1" аргументами: "Свойство "Email1Address" неизвестно." строка:33 знак:42 + $cContactForDel += $oMAPIFolderDel.Find <<<< (" [Email1Address] = ""$M"" ") + CategoryInfo : NotSpecified: ( ![]() + FullyQualifiedErrorId : ComMethodTargetInvocation |
Отправлено: 12:44, 03-02-2012 | #6 |
Пользователь Сообщения: 77
|
Профиль | Отправить PM | Цитировать Есть ли способ искать в массиве объектов, если у каждого объекта разный набором свойств?
|
Отправлено: 12:01, 07-02-2012 | #7 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать Как вариант отфильтровать,только по заданному типу,скажем Контакт,а дальше использовать операторы сравнения PowerShell,я думаю здесь скорость особо не критична.
|
Отправлено: 12:14, 07-02-2012 | #8 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Поиск и удаление строки в файле по сложным условиям | m0nkrus | Скриптовые языки администрирования Windows | 9 | 26-06-2011 10:37 | |
CMD/BAT - [решено] Помогите с написанием батника копирования с FTP по условиям. | alexuvv | Скриптовые языки администрирования Windows | 5 | 24-06-2011 08:20 | |
Интернет - Как подключить к выделенке 2 и более интернет-устройства в обход условиям | illusionmgs | Сетевые технологии | 11 | 20-04-2008 12:14 | |
[решено] Где брать ключи установки по условиям downgrade ? | extend | Лицензирование продуктов Microsoft | 22 | 23-04-2007 22:55 | |
Разным Flash - разные буквы? | DNK_Inc | Microsoft Windows 2000/XP | 8 | 28-11-2006 11:24 |
|