dosperados
24-09-2011, 14:51
Здравствуйте дорогие коллеги, возникла небольшая проблема при написании скрипта: Как я думаю суть проблемы в том что свойство объекта которое является логическим (True/False) необходимо сравнивать как-то по другому, но я не могу понять как....
Кто сталкивался с таким подскажите!
Вот примеры кода как я пытался сравнить:
$sEmail = "mail@mail.ru"
$Subject = "Special message"
$cMessage = $oMyMAPIFolder.Items
#1 вот так не работает
$cMessage | foreach { if ($_.Subject -eq "$Subject" -and $_.UnRead -eq "True") {Write-Host "Пришла команда"; $_.UnRead = "0"} }
#2 вот так не работает
$oMessage = $cMessage.Find("[Subject] = ""$Subject"" ")
While ($oMessage -ne $null) {
if ($_.UnRead -eq "True") {Write-Host "Пришла команда"; $_.UnRead = "0"}
$oMessage = $cMessage.FindNext()
}
#3
#3.1 вот так не работает
$cResult = $cMessage | Where { ($_.Subject -eq "$Subject") -and ($_.UnRead -eq "True")}
#3.2 вот так не работает
$cResult = $cMessage | Where { $_.Subject -eq "$Subject" -and $_.UnRead -eq "True"}
#3.3 так находит но этот вариант не устраивает тем что по одному условию ищет, значит опять надо на второе условие проверять, и плюс он в 10 раз медленней всех остальных работает
$cResult = $cMessage | Where { $_.Subject -eq "$Subject"}
$cResult | Foreach { if ($_.UnRead -eq "True") {Write-Host "Пришла команда"; $_.UnRead = "0"}
Write-Host $_.EntryID $_.UnRead
}
P.S. Если вместо "True" ставить "1" тоже нечего не работает
Кто сталкивался с таким подскажите!
Вот примеры кода как я пытался сравнить:
$sEmail = "mail@mail.ru"
$Subject = "Special message"
$cMessage = $oMyMAPIFolder.Items
#1 вот так не работает
$cMessage | foreach { if ($_.Subject -eq "$Subject" -and $_.UnRead -eq "True") {Write-Host "Пришла команда"; $_.UnRead = "0"} }
#2 вот так не работает
$oMessage = $cMessage.Find("[Subject] = ""$Subject"" ")
While ($oMessage -ne $null) {
if ($_.UnRead -eq "True") {Write-Host "Пришла команда"; $_.UnRead = "0"}
$oMessage = $cMessage.FindNext()
}
#3
#3.1 вот так не работает
$cResult = $cMessage | Where { ($_.Subject -eq "$Subject") -and ($_.UnRead -eq "True")}
#3.2 вот так не работает
$cResult = $cMessage | Where { $_.Subject -eq "$Subject" -and $_.UnRead -eq "True"}
#3.3 так находит но этот вариант не устраивает тем что по одному условию ищет, значит опять надо на второе условие проверять, и плюс он в 10 раз медленней всех остальных работает
$cResult = $cMessage | Where { $_.Subject -eq "$Subject"}
$cResult | Foreach { if ($_.UnRead -eq "True") {Write-Host "Пришла команда"; $_.UnRead = "0"}
Write-Host $_.EntryID $_.UnRead
}
P.S. Если вместо "True" ставить "1" тоже нечего не работает