首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >[exchangewebservices]使用"0“参数调用"Update”的异常:“操作将更改对象类型,这是不允许的。”

[exchangewebservices]使用"0“参数调用"Update”的异常:“操作将更改对象类型,这是不允许的。”
EN

Stack Overflow用户
提问于 2018-08-10 14:22:47
回答 2查看 194关注 0票数 0

我的目标要么是更改公用文件夹类,要么创建一个新的公用文件夹作为联系人(新的公用文件夹不可能)。所以我拿了一些阴沟新闻的片段。

代码语言:javascript
复制
function FolderIdFromPath{
param (
        $FolderPath = "$( throw 'Folder Path is a mandatory Parameter' )"
      )
process{


        ## Find and Bind to Folder based on Path  
    #Define the path to search should be seperated with \  
    $folderid = new-object Microsoft.Exchange.WebServices.Data.FolderId([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::PublicFoldersRoot)   
    $tfTargetFolder = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($service,$folderid)  
    #Split the Search path into an array  
    $fldArray = $FolderPath.Split("\") 
     #Loop through the Split Array and do a Search for each level of folder 
    for ($lint = 1; $lint -lt $fldArray.Length; $lint++) { 
        #Perform search based on the displayname of each folder level 
        $fvFolderView = new-object Microsoft.Exchange.WebServices.Data.FolderView(1) 
        $SfSearchFilter = new-object Microsoft.Exchange.WebServices.Data.SearchFilter+IsEqualTo([Microsoft.Exchange.WebServices.Data.FolderSchema]::DisplayName,$fldArray[$lint]) 
        $findFolderResults =  $service.FindFolders($tfTargetFolder.Id,$SfSearchFilter,$fvFolderView) 
        if ($findFolderResults.TotalCount -gt 0){ 
            foreach($folder in $findFolderResults.Folders){ 
                $tfTargetFolder = $folder                
            } 
        } 
        else{ 
            "Error Folder Not Found"  
            return $null
        }     
    }  
    if($tfTargetFolder -ne $null){
        return $tfTargetFolder.Id.UniqueId.ToString()
    }
}
}
#Example use
$fldId = FolderIdFromPath -FolderPath "\my\folder"

$Subfolderid = new-objectMicrosoft.Exchange.WebServices.Data.FolderId($fldId) 
$SubFolder = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($service,$SubFolderId)
$subfolder.FolderClass = "IPF.Contact"

$SubFolder.update()

使用"0“参数调用"Update”的异常:“操作将更改对象类型,这是不允许的。”

$SubFolder.update()异常使用"0“参数调用"Update”:“操作将更改对象类型,这是不允许的。”

然而,它失败了。这是一个许可问题,还是源中有问题?

提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2018-08-10 18:47:01

您的代码很难理解,但是如果我理解正确的话,您基本上就是在一个文件夹上使用"IPF.Contact“类型来执行一个IPF.Contact。如果文件夹存在,则尝试更新类型。

正如错误所述,一旦创建了对象,就不能更改它的底层类型。如果您使用EWS将联系人项读取为电子邮件项,然后尝试将其保存,您也可能会看到这一点。

您必须使用预期的类型创建文件夹。

票数 0
EN

Stack Overflow用户

发布于 2018-08-13 09:17:07

我试图更新一个现有的空公用文件夹。新的尝试是创建一个具有正确文件夹类型的新公用文件夹。我使用与前面相同的函数检索父文件夹的folderid,但也失败了:

代码语言:javascript
复制
    $fldId = FolderIdFromPath -FolderPath "\my\folder"
    $EWSParentFolder = $null
    $NewFolder = new-object Microsoft.Exchange.WebServices.Data.Folder($service)  
    $NewFolder.DisplayName = "test123"
    $NewFolder.FolderClass = "IPF.Contact"
    $ParentFolderId =  new-object Microsoft.Exchange.WebServices.Data.FolderId($fldId.id)
    $EWSParentFolder = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($service,$ParentFolderId)       
    $NewFolder.Save($EWSParentFolder.Id)  

错误消息:使用"2“参数调用"Bind”的异常:"Id格式错误。“-got it:-got必须用$fldid.id初始化!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51788576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档