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

Powershell 使用管理员帐户阅读邮箱中的电子邮件,powershell,Powershell,我可以使用此脚本在我自己的帐户中阅读电子邮件。它工作得很好。 但是,如果我指定一个管理员帐户来读取另一个邮箱中的电子邮件,它将在代码的最后一行失败,“Autodiscover阻止了可能不安全的重定向…” 这是我的密码: $Userid="a4327" $pass_secure = Get-Content "e:\hilario\cred_a910327.txt" | ConvertTo-SecureString $credential = new-object -typename System.

我可以使用此脚本在我自己的帐户中阅读电子邮件。它工作得很好。 但是,如果我指定一个管理员帐户来读取另一个邮箱中的电子邮件,它将在代码的最后一行失败,“Autodiscover阻止了可能不安全的重定向…”

这是我的密码:

$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)
下面是正在运行的带有错误的代码的列表。
谢谢@MathiasR.Jessen。 添加$TestUrlCallback修复了该问题

$Userid=“a4327”
$Sharedmail=“MessagingReports”
$pass_secure=获取内容“e:\hilario\cred_a910327.txt”|转换为SecureString
$credential=新对象-typename System.Management.Automation.PSCredential-argumentlist$Userid,$pass\u secure
$password=$credential.GetNetworkCredential().password
$dllpath=“C:\Program Files\Microsoft\Exchange\Web Services\2.2\Microsoft.Exchange.WebServices.dll”
[void][Reflection.Assembly]::加载文件($dllpath)
$service=新对象Microsoft.Exchange.WebServices.Data.ExchangeService
$Service.Credentials=新对象Microsoft.Exchange.WebServices.Data.WebCredentials($Userid,$password)
$TestUrlCallback={
参数([string]$url)
如果($url-eq)https://autodiscover-s.outlook.com/autodiscover/autodiscover.xml“”{$true}否则{$false}
}

$service.AutodiscoverUrl($Sharedmail,$TestUrlCallback)
感谢@MathiasR.Jessen。 添加$TestUrlCallback修复了该问题

$Userid=“a4327”
$Sharedmail=“MessagingReports”
$pass_secure=获取内容“e:\hilario\cred_a910327.txt”|转换为SecureString
$credential=新对象-typename System.Management.Automation.PSCredential-argumentlist$Userid,$pass\u secure
$password=$credential.GetNetworkCredential().password
$dllpath=“C:\Program Files\Microsoft\Exchange\Web Services\2.2\Microsoft.Exchange.WebServices.dll”
[void][Reflection.Assembly]::加载文件($dllpath)
$service=新对象Microsoft.Exchange.WebServices.Data.ExchangeService
$Service.Credentials=新对象Microsoft.Exchange.WebServices.Data.WebCredentials($Userid,$password)
$TestUrlCallback={
参数([string]$url)
如果($url-eq)https://autodiscover-s.outlook.com/autodiscover/autodiscover.xml“”{$true}否则{$false}
}

$service.AutodiscoverUrl($Sharedmail,$TestUrlCallback)
该错误可能意味着找不到合适的Url,因为
$TestUrlCallback
谓词拒绝了所有Url。你能同时发布
$TestUrlCallback
吗?谢谢Mathias。就这样。我忘记了$TESTURL回调。添加此项时,它通过了自动发现行。我必须添加:$TestUrlCallback={param([string]$url)if($url-eq”){$true}else{$false}}@MathiasR.Jessen您可以将其作为一个答案(并为此获得积分)我没有,因为我一直在等你:)这个错误可能意味着找不到合适的Url,因为你的
$TestUrlCallback
谓词拒绝了所有Url。你也可以发布
$TestUrlCallback
吗?谢谢Mathias。就是这样。我忘记了$TestUrlCallback。添加这个时,它通过了自动发现行。我必须添加:$TestUrlCallback={param([string]$url)if($url-eq”){$true}else{$false}}@MathiasR.Jessen您可以将其作为一个答案(并为此获得信用)我没有,因为我一直在等待您:)