我有一个项目,我将 Office 365 许可证分配给用户。有一个 Web 项目允许管理员查看可用许可证并为用户选择许可证。在后台,有一项服务每 15 分钟执行一次实际的许可证分配(以及许多其他任务)。我们不直接分配许可证的原因是用户可能尚未同步到 Office 365。如果 DirSync 尚未运行,该服务稍后会自动重试。
回到我的问题:与 Office 365 的连接正在使用 PowerShell 模块“MSOnline”。问题是服务无法加载该模块。我总是收到标准错误消息:
未加载指定的模块“MSOnline”,因为在任何模块目录中均未找到有效的模块文件。
Web应用程序不存在这个问题。例如,它可以连接并检索可用的许可证。如果我使用 LINQPad 中服务应用程序的代码或作为小型独立可执行文件,一切也都可以正常工作。只有服务无法加载模块。谁能帮我?
Web 应用程序和服务都使用以下代码片段来连接到 Office 365(代码经过简化以提高可读性)。
var iss = InitialSessionState.CreateDefault();
iss.ThrowOnRunspaceOpenError = true;
iss.AuthorizationManager = new AuthorizationManager("MyPowerShellInvoker");
iss.ImportPSModule("MSOnline");
_runspace = RunspaceFactory.CreateRunspace(iss);
_runspace.Open();
_invoker = new RunspaceInvoke(_runspace);
using (Pipeline pipeline = _runspace.CreatePipeline())
{
var cmd = new Command("Connect-MsolService");
cmd.Parameters.Add("Credential", /* PSCredential object */);
pipeline.Commands.Add(cmd);
pipeline.Invoke();
}
P.S.:该服务在“本地系统”帐户下运行。
您的服务是作为 32 位还是 64 位目标运行。我在很多情况下都遇到了 32/64 的问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)