【问题标题】:Connect-MsolService error after importing MSOnline module导入 MSOnline 模块后出现 Connect-MsolService 错误
【发布时间】: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


    【解决方案1】:

    叹息。这似乎是单点登录助手和 MSOL 模块的错误。我已经可靠地重现了这个问题,并将它报告给了 Office 365 支持。它无处可去。简单地说,Connect-MSOnline 仅在本地会话中有效。

    请注意,MSOL 模块是一个非常奇怪的野兽,它不是使用 PSSession 来保持与 Azure 的连接,而是使用一些必须依赖单点登录助手的内部机制。这可能是远程会话中 MSOL 命令行开关无法连接到 Azure AD 的原因。

    这对我来说是一条死胡同,解决它的唯一方法是编写一个应用程序,该应用程序使用 MSOL 模块在服务器上运行并接受来自客户端的命令,或者通过服务或计划任务直接在服务器上调用。

    【讨论】:

    • 谢谢,takiysobi。不是我希望的答案,但它是我所期望的。
    猜你喜欢
    • 2013-04-07
    • 2019-05-12
    • 2021-10-24
    • 2022-11-30
    • 1970-01-01
    • 2020-10-25
    • 2016-11-02
    • 2015-12-28
    • 1970-01-01
    相关资源
    最近更新 更多