dosperados
03-02-2012, 10:16
Написал поиск в 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"" ") }
Переменная $del массив с n`ным кол-вом объектов в нем и свойствами этих объектов.
Хотел организовать поиск по совпадению двух параметров.
логика была такая:
найти объект
[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
$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"" ") }
Переменная $del массив с n`ным кол-вом объектов в нем и свойствами этих объектов.
Хотел организовать поиск по совпадению двух параметров.
логика была такая:
найти объект
[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