Powershell - проверка, находится ли переменная в массиве - PullRequest
0 голосов
/ 01 апреля 2020

Я создал скрипт, который возвращает письма с указанными c адресами электронной почты субъекта и отправителя,

У меня есть массив писем, и мне нужно сравнить каждый элемент массива с отправителем электронной почты и записать вывод для разрешенных отправители и, если найдено, напишите вывод для запрещенных

$sender = $result.Sender.Address - exports senders for each email
$allowed_senders = @("user1@example.com", "user2@example.com") - users who are allowed to send emails

У меня есть 3 электронных письма со следующими отправителями:

user1, user2 и user3

write-output "Searching for emails with subject New Empoyee.." | timestamp >> $LogFile
      Write-Verbose "Searching for emails with subject New Empoyee.."
      $searchfilter = new-object Microsoft.Exchange.WebServices.Data.SearchFilter+ContainsSubstring([Microsoft.Exchange.WebServices.Data.EmailMessageSchema]::Subject,"New Employee")
      $itemView = new-object Microsoft.Exchange.WebServices.Data.ItemView(999)
      $searchResults = $service.FindItems($Folder.ID, $searchfilter, $itemView)

      # Find destination folder

      $TargetFolderSearch = new-object Microsoft.Exchange.WebServices.Data.SearchFilter+IsEqualTo([Microsoft.Exchange.WebServices.Data.FolderSchema]::Displayname,"done") #for each folder in mailbox define search
      $TargetFolder = $MailboxRoot.FindFolders($TargetFolderSearch,$fvFolderView)
      Write-Verbose "Searching for emails with subject New Empoyee finished"
      write-output "Searching for emails with subject New Empoyee finished" | timestamp >> $LogFile

          write-output "Parsing Email Body..." | timestamp >> $LogFile 
          Write-Verbose "Parsing Email Body..."

           $allowed_senders = @("user1@example.com", "user2@example.com")
          foreach($result in $searchResults){
            $sender = $result.Sender.Address
              if ($array -notcontains $allowed_senders){
                 Write-Verbose "$sender is not allowed"
              }
              else{
                Write-Verbose "$sender is allowed"
              }

           }

user3@example.com отсутствует в массиве, поэтому я ожидаю следующий вывод

Ожидаемый вывод:

user3@example.com не разрешен

user1@example.com разрешен

user2@example.com разрешено

Фактический вывод:

user1@example.com не разрешено

user2@example.com не разрешено

user3@example.com не допускается

1 Ответ

0 голосов
/ 01 апреля 2020

Разобрался:

я сделал опечатку, я сравнил несуществующую @array переменную

 $TargetFolderSearch = new-object Microsoft.Exchange.WebServices.Data.SearchFilter+IsEqualTo([Microsoft.Exchange.WebServices.Data.FolderSchema]::Displayname,"done") #for each folder in mailbox define search
      $TargetFolder = $MailboxRoot.FindFolders($TargetFolderSearch,$fvFolderView)
      Write-Verbose "Searching for emails with subject New Empoyee finished"
      write-output "Searching for emails with subject New Empoyee finished" | timestamp >> $LogFile

          write-output "Parsing Email Body..." | timestamp >> $LogFile 
          Write-Verbose "Parsing Email Body..."

          $array = @("user1@example.com", "user2@example.com")
          foreach($result in $searchResults){
              $sender = $result.Sender.Address
              if($array -notcontains $sender){
                 Write-Verbose "Not Allowed:$sender"
              }  
              else{
                 Write-Verbose "Allowed:$sender"
              }

           }

Вывод:

user3@example.com не допускается

user1@example.com разрешено

user2@example.com разрешено

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...