簡體   English   中英

Powershell - 檢查變量是否在數組中

[英]Powershell - Check if variable is in array

我創建了一個腳本,它返回帶有特定主題和發件人電子郵件地址的電子郵件,

我有電子郵件數組,我需要將每個數組成員與電子郵件發件人進行比較,並為允許的發件人寫入輸出,如果找到,則為不允許的發件人寫入輸出

$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 封電子郵件:

用戶 1、用戶 2 和用戶 3

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

弄清楚了:

我打錯了,我比較了不存在的@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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM