使用Powershell列出Office 365邮箱中的电子邮件

时间:2018-07-21 14:20:29

标签: powershell

在下面的Powershell脚本中,我需要查看共享邮箱mobileprint@abcdef.com中的收件箱/消息。但是脚本会返回管理员帐户admin@abcdef.com中的收件箱/消息。
管理员帐户有权访问共享邮箱,并且应向脚本提供访问共享邮箱的凭据。

[Reflection.Assembly]::LoadFile("C:\Program Files\Microsoft\Exchange\Web Services\2.0\Microsoft.Exchange.WebServices.dll")
$s = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService
$AdminName = "admin@abcdef.com"
$Pass = Get-Content "cred_.txt" | ConvertTo-SecureString
$s.Credentials = New-Object Net.NetworkCredential($AdminName , $Pass)
$s.AutodiscoverUrl("mobileprint@abcdef.com", {$true})
$inbox = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($s,[Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::Inbox)
$inbox

2 个答案:

答案 0 :(得分:0)

我建议您签出https://gsexdev.blogspot.com/2016/10/ews-basics-accessing-and-using-shared.html

在使用EWS访问文件夹方面,它有一些非常好的解释。

您最感兴趣的部分就是这里:

要访问EWS中的邮箱文件夹,您需要知道该文件夹的EWSId,该规则的一个例外是WellKnownFolders,例如Inbox,Contacts,Calendar等。使用这些WellKnowFolders,您可以告诉EWS您想要的文件夹不知道该文件夹的EWSId的邮箱。

例如,要访问共享邮箱中的收件箱,请使用FolderId重载来定义要访问的folderId,然后将其绑定到该文件夹​​:

  

$ folderid = new-objectMicrosoft.Exchange.WebServices.Data.FolderId([Microsoft.Exchange.WebServices.Data.WellKnownFolderName] :: Inbox,$ MailboxName)

     

$ Inbox = [Microsoft.Exchange.WebServices.Data.Folder] :: Bind($ service,$ folderid)

答案 1 :(得分:0)

谢谢亨里克。我终于明白了。我必须使用“模拟”行来使其正常工作。这有助于Using EWS impersonation and PowerShell to log into an Exchange Online Mailbox

private  Menu thismenu;

if (condition)
{
   if(thismenu != null)
   {
       thismenu.findItem(R.id.menu_save).setVisible(true);
       Toast.makeText(ProfileActivity.this, 
    ""+thismenu.findItem(R.id.menu_save).getTitle(),
                Toast.LENGTH_SHORT).show();
   }else
   {
       thismenu.findItem(R.id.menu_save).setVisible(false);
   }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
   getMenuInflater().inflate(R.menu.profile_menu, menu);
   thismenu = menu;

   return true;
}