我正在尝试使Powershell脚本自动化,该脚本从O365收集数据。我有一个特殊的受限用户设置,具有O365上要求的特权以及服务器上允许的本地登录,以便我可以“运行”该用户(我在以下所有脚本中都进行过此操作。以其他用户身份运行时出现的预期错误)。
当这样设置凭据并打开会话时,脚本可以很好地交互工作:
$cred = Get-Credential
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell -Credential $cred -Authentication Basic –AllowRedirection
但是,如果我使用以下方法创建用于自动化的凭据文件
:Get-Credential | Export-Clixml -Path C:\batch\${env:USERNAME}_cred.xml
然后通过以下命令从脚本中访问
:$cred = Import-Clixml -Path C:\batch\${env:USERNAME}_cred.xml
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell -Credential $cred -Authentication Basic –AllowRedirection
凭据文件加载似乎成功。然后,我在打开的会话上获得“访问被拒绝”,然后由于会话为空,所以当然脚本的其余部分也会失败。在所有情况下,我都会剪切和粘贴密码(而且已经尝试了很多次,包括手动键入在内的很多次),所以我认为这不是一个简单的错字问题。似乎更像是我对Powershell的根本误解。最终,如果我还有其他需要的特殊设置,我不仅要使凭据自动化,还要从任务计划程序运行它。
答案 0 :(得分:1)
从PowerShell的角度来看,从您的代码中我看不到任何错误。我已经测试了在公司域中创建凭据的方式,并且能够通过导入凭据XML
文件创建新的会话,该文件是通过以您的方式导出凭据而创建的。然后,我认为它可能与MS Exchange
有关。
我可以建议您尝试以下替代方法:
# First we need to get the encrypted password:
$TempCred = Get-Credential
# provide credentials to the prompt
# now the encryption to be saved in a file
$TempCred.Password | ConvertFrom-SecureString | Set-Content C:\mypass.txt
这是密码的加密版本另存为文本。
您现在可以在自动化脚本中执行以下操作:
$username = "yourusername"
$password = Get-Content C:\mypass.txt | ConvertTo-SecureString
$cred = New-Object System.Management.Automation.PsCredential($username, $password)
$session = New-PSSession -Credential $cred .....
我不确定这是否适用于您的情况,它是否适用于我的公司域。它再次对我来说XML
版本也有效。如果您不愿意找出XML
方式为何不起作用的原因,我只是提供替代方法。
答案 1 :(得分:1)
至少可以通过调用Import-PSSession
来使此功能在我的环境中起作用:
$Credential = Import-Clixml -Path D:\Modules\O365Credentials.xml
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $Credential -Authentication Basic -AllowRedirection
Import-PSSession $Session -DisableNameChecking
Get-Mailbox
答案 2 :(得分:1)
相关帐户是否已启用MFA?如果是这样,您可以尝试this。
此脚本:
或者,您可以手动执行这些操作。此处提供了更多信息,包括详细的演练:
https://o365reports.com/2019/04/17/connect-exchange-online-using-mfa/