运行Connect-MsolService时,我收到以下错误 -
类型异常' Microsoft.Online.Administration.Automation.MicrosoftOnlineException'被扔了。 + CategoryInfo:OperationStopped:(:) [Connect-MsolService],MicrosoftOnlineException + FullyQualifiedErrorId:0x80090345,Microsoft.Online.Administration.Automation.ConnectMsolService + PSComputerName:xxxxx
背景 - 我使用PowerShell来管理Active Directory,Exchange和Sharepoint Online用户数据。我有一个SSIS包,动态构建传递给powershell脚本的参数,用于创建新的和更新现有AD用户数据,为每个用户添加/更新必要的安全和通讯组,启用交换邮箱,以及将自定义属性数据传递给Sharepoint在线用户配置文件。
为了保持运行SSIS包的SQL Server的纯度,将为具有导入所需模块的服务器创建动态会话。这使我可以完成上面提到的所有事情,而无需在我的SQL服务器上安装不同的模块。
我的最后一个障碍是自动化Office 365许可。为了编写许可分配脚本,我创建了一个到我们的服务器的会话,该服务器具有必要的MSOnline模块并导入它,使我能够访问Cmdlet,如Set-MsolUserLicense。但是,在我可以使用Cmdlet之前,我必须连接到MSOLService。
当我运行Connect-MsolService时,凭据模式会按预期弹出,输入相应的凭据(已经过一千次验证),我收到上面显示的错误。
当我从安装了MSOnline cmdlet的服务器运行它们时,这些命令都可以正常工作,但在我的SQL服务器上成功导入模块后运行时返回错误。
以下是用于建立会话和导入MSOnline模块的命令 -
$securePassword = ConvertTo-SecureString $Password -AsPlainText -Force
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $Username, $securePassword
$outputSession = $Null
foreach($session in Get-PSSession){
if(($session.ComputerName -eq $Server) -and ($session.Availability -eq "Available")){
$outputSession = $session
}
}
if ($outputSession -eq $Null){
$outputSession = New-PSSession -ComputerName $Server -Credential $cred -Name 'MSOnline'
Invoke-Command -Session $outputSession -ScriptBlock {Import-Module MSOnline}
Import-PSSession -session $outputSession -module MSOnline -AllowClobber
}
Connect-MSOLService是唯一一个使用这些方法给我带来问题的Cmdlet。您将提供任何帮助,我们将不胜感激。
答案 0 :(得分:0)
叹息。这似乎是单点登录助手和MSOL模块的错误。我已经可靠地复制了此问题并将其报告给Office 365支持。它无处可去。要简单说明, Connect-MSOnline 仅适用于本地会话。
请注意,MSOL模块是一个非常奇怪的野兽,它不是使用PSSession来维护与Azure的连接,而是使用一些必须依赖单点登录助手的内部机制。这可能是远程会话MSOL命令行开关无法连接到Azure AD的原因。
对我来说这是一个死胡同,解决它的唯一方法是使用MSOL模块编写在服务器上运行的应用程序,并接受来自客户端的命令,或者直接通过服务或计划任务在服务器上调用。