在Exchange 2013上转换为EWSId时出错在Exchange 2010上正常工作

时间:2016-07-06 10:11:06

标签: powershell exchangewebservices

当我运行以下代码时你好。

$ service.ImpersonatedUserId = new-object Microsoft.Exchange.WebServices.Data.ImpersonatedUserId([Microsoft.Exchange.WebServices.Data.ConnectingIdType] :: SmtpAddress,$ MailboxName)

功能ConvertId {
    param(
            $ OwaId =" $(抛出' OWAId是强制参数')"
          )
    过程{
        $ aiItem = New-Object Microsoft.Exchange.WebServices.Data.AlternateId
        $ aiItem.Mailbox = $ MailboxName
        $ aiItem.UniqueId = $ OwaId
        $ aiItem.Format = [Microsoft.Exchange.WebServices.Data.IdFormat] :: OwaId
        $ convertedId = $ service.ConvertId($ aiItem,[Microsoft.Exchange.WebServices.Data.IdFormat] :: EwsId)
        return $ convertedId.UniqueId
    }
}

从EMS获取文件夹ID并绑定到EWS中的文件夹

get-mailboxfolderstatistics $ MailboxName | ForEach-Object {

$folderid = new-object Microsoft.Exchange.WebServices.Data.FolderId((Convertid $_.FolderId))     
$ewsFolder = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($service,$folderid)  
$ewsFolder  

}

我收到以下错误。 Exchange 2013的方法是否应该不同。

ForEach-Object:异常调用" ConvertId"用" 2"参数:"数据已损坏。" 在D:\ Scripts \ SAVE SCRIPTS \ Get-FoldeIDsr.ps1:89 char:44 + get-mailboxfolderstatistics $ MailboxName | ForEach-Object { + ~~~~~~~~~~~~~~~~     + CategoryInfo:NotSpecified:(:) [ForEach-Object],MethodInvocationException     + FullyQualifiedErrorId:ServiceResponseException,Microsoft.PowerShell.Commands.ForEachObjectCommand

1 个答案:

答案 0 :(得分:0)

你需要URLEncode你从EMS获得的FolderId,因为它可能有非法字符,例如

Add-Type -AssemblyName System.Web        
$urlEncodedId = [System.Web.HttpUtility]::UrlEncode($_.FolderId.ToString())
$folderid= new-object Microsoft.Exchange.WebServices.Data.FolderId((Convertid $urlEncodedId))  
$ewsFolder = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($service,$folderid)