使用管理员帐户阅读邮箱中的电子邮件

时间:2020-03-27 17:55:50

标签: powershell

我可以使用此脚本以自己的帐户阅读电子邮件。效果很好。 但是,如果我指定一个管理员帐户来读取另一个邮箱中的电子邮件,则会在代码的最后一行失败,并显示“自动发现阻止了可能不安全的重定向...”

这是我的代码:

$Userid="a4327"
$pass_secure = Get-Content "e:\hilario\cred_a910327.txt" | ConvertTo-SecureString
$credential = new-object -typename System.Management.Automation.PSCredential -argumentlist $Userid, $pass_secure
$password = $credential.GetNetworkCredential().password
$dllpath = "C:\Program Files\Microsoft\Exchange\Web Services\2.2\Microsoft.Exchange.WebServices.dll" 
[void][Reflection.Assembly]::LoadFile($dllpath) 
$service = new-object Microsoft.Exchange.WebServices.Data.ExchangeService 
$Service.Credentials = New-Object Microsoft.Exchange.WebServices.Data.WebCredentials($Userid,$password)
$Sharedmail = "MessagingReports"
$service.AutodiscoverUrl($Sharedmail,$TestUrlCallback)

这是正在运行的代码的错误提示。 enter image description here

1 个答案:

答案 0 :(得分:0)

感谢@ MathiasR.Jessen。 添加$ TestUrlCallback可以解决此问题。

$Userid="a4327"
$Sharedmail = "MessagingReports"
$pass_secure = Get-Content "e:\hilario\cred_a910327.txt" | ConvertTo-SecureString
$credential = new-object -typename System.Management.Automation.PSCredential -argumentlist $Userid, $pass_secure
$password = $credential.GetNetworkCredential().password
$dllpath = "C:\Program Files\Microsoft\Exchange\Web Services\2.2\Microsoft.Exchange.WebServices.dll" 
[void][Reflection.Assembly]::LoadFile($dllpath) 
$service = new-object Microsoft.Exchange.WebServices.Data.ExchangeService 
$Service.Credentials = New-Object Microsoft.Exchange.WebServices.Data.WebCredentials($Userid,$password)
$TestUrlCallback = {
    param ([string] $url)
    if ($url -eq "https://autodiscover-s.outlook.com/autodiscover/autodiscover.xml") {$true} else {$false}
}
$service.AutodiscoverUrl($Sharedmail,$TestUrlCallback)