【问题标题】:EWS Not returning folder permissionsEWS 不返回文件夹权限
【发布时间】:2015-03-18 23:56:43
【问题描述】:

关于为什么这个 ews managed api in 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
        }
    }
}

【问题讨论】:

    标签: powershell exchange-server exchangewebservices


    【解决方案1】:

    您需要请求 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);
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-12
      • 1970-01-01
      • 2013-07-30
      • 2018-09-19
      • 2017-02-08
      相关资源
      最近更新 更多