EWS不返回文件夹权限

时间:2015-01-20 16:43:51

标签: powershell exchange-server exchangewebservices

为什么这个ews管理api在powershell中的任何想法都会返回0文件夹计数而没有权限?我正在使用模拟,它返回文件夹名称但没有权限。

function GetPerms{
    param([string]$mailboxaddress)

    $enumSmtpAddress = [Microsoft.Exchange.WebServices.Data.ConnectingIdType]::SmtpAddress   
    $global:service.ImpersonatedUserId = New-Object Microsoft.Exchange.WebServices.Data.ImpersonatedUserId($enumSmtpAddress,$mailboxaddress);            
    $mailbox = New-Object Microsoft.Exchange.WebServices.Data.Mailbox($mailboxaddress)
    $FolderID = New-Object Microsoft.Exchange.WebServices.Data.FolderId([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::MsgFolderRoot,$mailbox)
    $FolderRoot = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($global:service,$FolderID);
    $FolderView = New-Object Microsoft.Exchange.WebServices.Data.FolderView(10000)
    $FolderView.Traversal = [Microsoft.Exchange.WebServices.Data.FolderTraversal]::Deep
    $findfolders = $FolderRoot.FindFolders($FolderView);

    foreach ($folder in $findfolders.Folders){
        $id = New-Object Microsoft.Exchange.WebServices.Data.FolderId($folder.Id.UniqueId.ToString())
        $fld = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($global:service,$id);
        $perms = $fld.Permissions
        [int]$permcount = $fld.Permissions.Count
        write-host $permcount
        write-host $fld.Displayname, $fld.Permissions.Count

        foreach($f in $fld.Permisions.UserID.PrimarySmtpAddress){
            write-host $f
        }

        for($t=0;$t -le $perms.Count; $t++){
            [string]$displayname = $fld.Permissions[$t].UserId.DisplayName
            [string]$smtp = $fld.Permissions[$t].UserId.PrimarySmtpAddress
            #write-host $mailboxaddress,$fld.DisplayName,$smtp
        }
    }
}

1 个答案:

答案 0 :(得分:0)

您需要请求Exchange使用PropertySet返回文件夹权限,例如

    $psPropset= new-object Microsoft.Exchange.WebServices.Data.PropertySet([Microsoft.Exchange.WebServices.Data.BasePropertySet]::FirstClassProperties)  
    $psPropset.Add([Microsoft.Exchange.WebServices.Data.FolderSchema]::Permissions)
    $fld = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($global:service,$id,$psPropset);

然后应该返回权限 干杯 格伦