如何在C#代码

时间:2017-06-02 18:56:21

标签: c# .net wcf powershell

我最近在C#中编写了一个库,它使用System.Management.Automation来执行一些PowerShell命令。 更具体地说,它调用带有MSOnline模块的cmdlet来配置Office 365许可证。

(MSOnline Module已安装在我的机器上,因此未在代码中导入)

项目-设置:

not allowed to embed pictures

代码:

ProvisionHandler.cs @ WorkWithO365 图书馆

private PowerShell connectToO365(string adminprincipal, string password)
    {
        //Admin Credentials
        PSCredential credential = new PSCredential(adminprincipal, convertToSecureString(password));

        //open Shell
        var ps = PowerShell.Create();

        //Admin-Login
        ps.AddCommand("Connect-MsolService").AddParameter("-Credential", credential);
        ps.Invoke();//Error here

        return ps;
    }

(实际上有更多功能,但这不是我的意思)

然后我编写了一个控制台应用程序,它引用了该库:

Programm.cs @ PowerConsole

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WorkWithO365;

namespace Test1
{
    class Program
    {
        static void Main(string[] args)
        {
            var tenant = "myO365tenant.com";

            var adminpric = "admin.login@" + tenant;
            var adminpw = "somePassword";

            var usrPre = "Console";
            var usrG = "Test";


            ProvisionHandler pro = new ProvisionHandler();
            pro.provision(tenant, adminpric, adminpw, usrPre, usrG);
        }
    }
}

结果:一切正常。

为了解决这个问题,我在解决方案中添加了第二个控制台应用程序。第二个控制台具有与PowerConsole完全相同的代码,并且还引用相同的库。但突然间我得到了这个令人困惑的错误:

  

System.Management.Automation.CommandNotFoundException :'The   在“MSOnline”模块中找到了“Connect-MsolService”命令,但是   无法加载模块。有关更多信息,请运行   '导入模块MSOnline'。'

     

内部异常1: BadImageFormatException :无法加载文件或   部件   '文件:/// C:\ WINDOWS \ SYSTEM32 \ WindowsPowerShell \ V1.0 \模块\ MSOnline \ Microsoft.Online.Administration.Automation.PSModule.dll'   或其中一个依赖项。尝试加载程序   格式不正确。

     

内部异常2: CmdletInvocationException :无法加载文件或   部件   '文件:/// C:\ WINDOWS \ SYSTEM32 \ WindowsPowerShell \ V1.0 \模块\ MSOnline \ Microsoft.Online.Administration.Automation.PSModule.dll'   或其中一个依赖项。尝试加载程序   格式不正确。

我发现有nearly the same problem的人有以下解决方案:

  

这是项目文件本身的问题。创建一个新的(和   把所有东西都重新复制回去了)做了一个享受,这也意味着我的   MSOnline模块已正确安装并按预期工作。

但这对我不起作用。另外我不明白,PowerConsole如何工作,而Test1(完全相同的代码)则不然。我需要解决这个问题,因为我的目标是在一个托管在azure中的WCF服务中使用WorkWithO365库。

我在这里做错了什么?可能有另一种方法将MSOnline模块导入 Visual Studio项目,以避免在“C:\ Windows \ system32 \ WindowsPowerShell \ v1.0 \ Modules \ MSOnline \”< /强>

0 个答案:

没有答案