当我运行以下代码时你好。
$ 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
}
}
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
答案 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)