Обновление свойств контактов Outlook в Powershell с помощью свойств другого контакта перезаписывается пустой строкой

#powershell #outlook

Вопрос:

Мы синхронизируем список Sharepoint с Outlook наших пользователей и хотим обновить их список контактов по умолчанию с помощью свойств в списке Sharepoint. Для этого я написал сценарий Powershell, который редактирует эти контакты непосредственно в Outlook. Обратите внимание, что в полном сценарии я сначала проверяю, существует ли контакт, но это выходит за рамки проблемы.

 function Update-Contact
{
    param ($spContact)

    $searchFilter = "[FullName] = "   $spContact.FullName
    $existingContact = $contactList.Items.Find($searchFilter)

    $existingContact.Email1Address = $spContact.Email1Address
    $existingContact.MobileTelephoneNumber = $spContact.MobileTelephoneNumber
    $existingContact.JobTitle = $spContact.JobTitle
    $existingContact.CompanyName = $spContact.CompanyName
    $existingContact.Department = $spContact.Department
    $existingContact.BusinessTelephoneNumber = $spContact.BusinessTelephoneNumber
    $existingContact.Business2TelephoneNumber = $spContact.Business2TelephoneNumber

    $existingContact.Save()

}

$olApp = new-object -comobject outlook.application
$namespace = $olApp.GetNamespace("MAPI")
$contactList = $namespace.GetDefaultFolder(10)
$sharepointList = ($namespace.Folders | where FolderPath -match "Sharepoint Lists").Folders | where AddressBookName -match "Sharepoint"

foreach ($spContact in $sharepointList.Items) {
    Update-Contact $spContact
}
 

В функции Обновления контактов я «Нахожу» контакт из папки по умолчанию на основе полного имени контакта в папке Sharepoint. Это работает нормально, и как $existingContact, так и $spContact правильно установлены для контакта в относительной папке.

Однако, когда я обновляю свойства, свойства в $existingContact просто перезаписываются пустой строкой. Например: при обновлении имени компании я вижу, что устанавливаю его в допустимую строку, но это просто не работает.

 PS C:Scripts> $spContact.CompanyName
Contoso
PS C:Scripts> $existingContact.CompanyName
Not Contoso
PS C:Scripts> $existingContact.CompanyName = $spContact.CompanyName
PS C:Scripts> $existingContact.CompanyName

PS C:Scripts>
 

Когда я помещаю название компании между кавычками, я могу успешно обновить его…

 PS C:Scripts> $existingContact.CompanyName = "Contoso"
PS C:Scripts> $existingContact.CompanyName
Contoso
 

Кто-нибудь имеет представление, почему происходит такое поведение? Из того, что я вижу, это должно работать просто отлично.