我的目标要么是更改公用文件夹类,要么创建一个新的公用文件夹作为联系人(新的公用文件夹不可能)。所以我拿了一些阴沟新闻的片段。
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”:“操作将更改对象类型,这是不允许的。”
然而,它失败了。这是一个许可问题,还是源中有问题?
提前谢谢。
发布于 2018-08-10 18:47:01
您的代码很难理解,但是如果我理解正确的话,您基本上就是在一个文件夹上使用"IPF.Contact“类型来执行一个IPF.Contact。如果文件夹存在,则尝试更新类型。
正如错误所述,一旦创建了对象,就不能更改它的底层类型。如果您使用EWS将联系人项读取为电子邮件项,然后尝试将其保存,您也可能会看到这一点。
您必须使用预期的类型创建文件夹。
发布于 2018-08-13 09:17:07
我试图更新一个现有的空公用文件夹。新的尝试是创建一个具有正确文件夹类型的新公用文件夹。我使用与前面相同的函数检索父文件夹的folderid,但也失败了:
$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初始化!
https://stackoverflow.com/questions/51788576
复制相似问题