Как автоматизировать удаление контактов Exchange в Office365 - PullRequest
0 голосов
/ 12 ноября 2018

Я пишу сценарий powershell, который:

  1. Сравнивает два файла CSV
  2. Выходные файлы для: Изменения, добавление, удаление контактов
  3. Обновление и добавление контактов
  4. Удалить контакты

Проблема в том, когда я пытаюсь удалить контакты.Что сделано:

  #Check for Removed Contacts
   foreach($row in $File1_Data )
  {
    $data_found=0
     foreach($id in $emails_id)
      {
       if ($row.ExternalEmailAddress -eq $id)
         {
          $data_found=1

         }

      } 

   if($data_found -eq 0 ) #Email Not Found
      { $row|Select-Object -Property ExternalEmailAddress|Export-Csv -Path $Removed_Contact -Append -NoTypeInformation}

  }

Теперь у меня есть файл только с адресами электронной почты.Ошибка возникает, когда я пытаюсь запустить команду, подключенную на сервере Exchange.

$RemoveContacts = Import-CSV ".\Removed Contacts_$((Get-Date).ToString('MMddyyyy')).csv"
$RemoveContacts | ForEach { Remove-MailContact -identity $_ -confirm:$false}

Но я получаю следующую ошибку:

Невозможно обработать преобразование аргумента для параметра «Идентификация»,Не удалось преобразовать значение типа «@ {ExternalEmailAddress=testuser@testcompany.com}» типа «Deserialized.System.Management.Automation.PSCustomObject» в тип «Microsoft.Exchange.Configuration.Tasks.MailContactIdParameter».+ CategoryInfo: InvalidData: (:) [Remove-MailContact], ParameterBindin ... mationException + FullyQualifiedErrorId: ParameterArgumentTransformationError, Remove-MailContact + PSComputerName: outlook.office365.com

$ Структура файла_данных 1025 ** в формате Microsoft требует .и $ emails_id - это функция, которая сравнивает два CSV-файла.Но это не то место, где сценарий ломается, просто я создаю файл.Чего мне не хватает?

1 Ответ

0 голосов
/ 14 ноября 2018

Сообщение об ошибке говорит вам, что он не может преобразовать значение $ _ в то, что ему нужно для параметра -Identity. Обычно параметр -Identity для большинства командлетов PS будет уникальным для человека уникальным именем чего-либо. В этом случае это будет адрес электронной почты. С учетом вышесказанного сообщение об ошибке говорит вам, что вместо $ _, содержащего строковую версию адреса электронной почты, он содержит хеш или объект словаря, который содержит единственное свойство ExternalEmailAddress.

Таким образом, чтобы это работало, измените ваш $ _ на $ _. ExternalEmailAddress, и теперь вызов Remove-MailContact будет использовать значение свойства ExternalEmailAddress объекта в цикле ForEach.

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