使用 EWS 和 PowerShell 从联系人中检索扩展属性
Retrieving extended properties from contacts using EWS and PowerShell
虽然我能够检索默认联系人属性,但我希望检索计算机网络名称或 FTP 站点等值。
我知道有一些东西要添加到我的代码中,比如我想要检索的每个扩展属性。我找到了一些示例 C# 代码,但到目前为止我无法在 PowerShell 中编写它。
这是一段代码,其中默认属性有效但扩展属性无效。
$folderid= new-object Microsoft.Exchange.WebServices.Data.FolderId([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::Contacts,$MailboxName)
$Contacts = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($service,$folderid)
$ivItemView = New-Object Microsoft.Exchange.WebServices.Data.ItemView(50000)
$fiItems = $null
do{
$fiItems = $service.FindItems($Contacts.Id,$ivItemView)
$psPropset = new-object Microsoft.Exchange.WebServices.Data.PropertySet([Microsoft.Exchange.WebServices.Data.BasePropertySet]::FirstClassProperties)
$psPropset.Add([Microsoft.Exchange.WebServices.Data.ItemSchema]::MimeContent)
#Properties list https://msdn.microsoft.com/en-us/library/cc839633.aspx
$ComputerNetworkName = new-object Microsoft.Exchange.WebServices.Data.ExtendedPropertyDefinition(0x3A49,[Microsoft.Exchange.WebServices.Data.MapiPropertyType]::String)
#Add extended properties to properties set
$psPropset.Add($ComputerNetworkName);
[Void]$service.LoadPropertiesForItems($fiItems,$psPropset)
foreach($Item in $fiItems.Items){
$Item.ExtendedProperties | fl *
}
}
$ivItemView.Offset += $fiItems.Items.Count
}while($fiItems.MoreAvailable -eq $true)
如果有人知道...
提前致谢!
将我的问题添加到此处有助于我思考。 :)
#Create extended properties
$ComputerNetworkName = new-object Microsoft.Exchange.WebServices.Data.ExtendedPropertyDefinition(0x3A49,[Microsoft.Exchange.WebServices.Data.MapiPropertyType]::String)
#Add extended properties to properties set
$psPropset.Add($ComputerNetworkName);
编辑了我上面的代码,为下一位读者提供了一个有效的代码。
虽然我能够检索默认联系人属性,但我希望检索计算机网络名称或 FTP 站点等值。
我知道有一些东西要添加到我的代码中,比如我想要检索的每个扩展属性。我找到了一些示例 C# 代码,但到目前为止我无法在 PowerShell 中编写它。
这是一段代码,其中默认属性有效但扩展属性无效。
$folderid= new-object Microsoft.Exchange.WebServices.Data.FolderId([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::Contacts,$MailboxName)
$Contacts = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($service,$folderid)
$ivItemView = New-Object Microsoft.Exchange.WebServices.Data.ItemView(50000)
$fiItems = $null
do{
$fiItems = $service.FindItems($Contacts.Id,$ivItemView)
$psPropset = new-object Microsoft.Exchange.WebServices.Data.PropertySet([Microsoft.Exchange.WebServices.Data.BasePropertySet]::FirstClassProperties)
$psPropset.Add([Microsoft.Exchange.WebServices.Data.ItemSchema]::MimeContent)
#Properties list https://msdn.microsoft.com/en-us/library/cc839633.aspx
$ComputerNetworkName = new-object Microsoft.Exchange.WebServices.Data.ExtendedPropertyDefinition(0x3A49,[Microsoft.Exchange.WebServices.Data.MapiPropertyType]::String)
#Add extended properties to properties set
$psPropset.Add($ComputerNetworkName);
[Void]$service.LoadPropertiesForItems($fiItems,$psPropset)
foreach($Item in $fiItems.Items){
$Item.ExtendedProperties | fl *
}
}
$ivItemView.Offset += $fiItems.Items.Count
}while($fiItems.MoreAvailable -eq $true)
如果有人知道...
提前致谢!
将我的问题添加到此处有助于我思考。 :)
#Create extended properties
$ComputerNetworkName = new-object Microsoft.Exchange.WebServices.Data.ExtendedPropertyDefinition(0x3A49,[Microsoft.Exchange.WebServices.Data.MapiPropertyType]::String)
#Add extended properties to properties set
$psPropset.Add($ComputerNetworkName);
编辑了我上面的代码,为下一位读者提供了一个有效的代码。