【发布时间】:2014-09-09 23:27:16
【问题描述】:
我在运行 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 服务器的纯度,动态会话被创建到具有导入所需模块的服务器。这使我无需在我的 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。我们将不胜感激您能提供的任何帮助。
【问题讨论】:
标签: powershell ssis office365