EWS删除联系人上的PhoneNumber条目

时间:2018-02-01 16:51:15

标签: powershell exchangewebservices contacts

我尝试在使用ExchangeWebService和powershell时删除联系人中的电话号码条目。

我可以使用Numbers创建新的联系人等等。我甚至可以改变这些数字。但我可以将其设置为$null""

它总是给我Exception calling "Update" with "1" argument(s): "An object within a change description must contain one and only one property to modify."

我明白我不允许将它设置为""或者为null。但必须有一种删除电话号码的方法。

所以可能有人帮我解决这个问题。

到目前为止,我检查电话号码是否有变化,只在有电话号码的地方更新。

$enumBusinessPhoneValue = [Microsoft.Exchange.WebServices.Data.PhoneNumberKey]::BusinessPhone
if($c.PhoneNumbers[$enumBusinessPhoneValue] -ne "" -and $c.PhoneNumbers[$enumBusinessPhoneValue] -ne $null){
    if($busPhone -ne ""){
        if($c.PhoneNumbers[$enumBusinessPhoneValue] -ne $busPhone){
            echo "="
            $c.PhoneNumbers[$enumBusinessPhoneValue] = $busPhone
        }
    } else {
        $c.PhoneNumbers[$enumBusinessPhoneValue] = ""
    }
} else {
    if($busPhone -ne ""){
        $c.PhoneNumbers[$enumBusinessPhoneValue] = $busPhone
    }
}
$c.Update([Microsoft.Exchange.WebServices.Data.ConflictResolutionMode]::AlwaysOverwrite)

问题出在这一行$c.PhoneNumbers[$enumBusinessPhoneValue] = "",即使我输入$null我也会遇到同样的错误。

问候 skratter

1 个答案:

答案 0 :(得分:1)

在这种情况下,您需要使用商务电话的扩展属性(这与EmailAdddresses https://blogs.msdn.microsoft.com/emeamsgdev/2012/05/17/ews-managed-api-how-to-remove-email1-email2-email3-from-a-contact/相同),例如

$PidTagBusinessTelephoneNumber = new-object Microsoft.Exchange.WebServices.Data.ExtendedPropertyDefinition(0x3A08,[Microsoft.Exchange.WebServices.Data.MapiPropertyType]::String);
$c.RemoveExtendedProperty($PidTagBusinessTelephoneNumber)
$c.Update([Microsoft.Exchange.WebServices.Data.ConflictResolutionMode]::AlwaysOverwrite)