【问题标题】:Importing PowerShell module in C#在 C# 中导入 PowerShell 模块
【发布时间】:2013-06-08 21:00:18
【问题描述】:

我正在尝试编写一些 C# 代码以使用 PowerShell 与 Lync 进行交互,并且我需要在执行 Lync cmdlet 之前导入 Lync 模块。但是,我的代码似乎没有导入模块,并且我不断收到“找不到 get-csuser 命令”异常。这是我的代码:

PowerShell ps = PowerShell.Create();
ps.AddScript(@"import-module Lync");
ps.Invoke();
ps.Commands.AddCommand("Get-csuser");
foreach (PSObject result in ps.Invoke())
{
    Console.WriteLine(result.Members["Name"].Value);
}

知道如何导入 Lync 模块吗?

【问题讨论】:

    标签: c# powershell lync


    【解决方案1】:

    知道了,模块需要通过其完整路径导入,并且 64 位 powershell 和 32 位 powershell 的执行策略需要设置为 Unrestricted(或其他任何限制,具体取决于您的情况) .代码如下:

    static void Main(string[] args)
    {
        InitialSessionState initial = InitialSessionState.CreateDefault();
        initial.ImportPSModule(new string[] {"C:\\Program Files\\Common Files\\Microsoft Lync Server 2010\\Modules\\Lync\\Lync.psd1"} );
        Runspace runspace = RunspaceFactory.CreateRunspace(initial);
        runspace.Open();     
        PowerShell ps = PowerShell.Create();
        ps.Runspace = runspace;
        ps.Commands.AddCommand("Get-csuser");
    
        foreach (PSObject result in ps.Invoke())
        {
            Console.WriteLine(result.Members["Identity"].Value);
        }
    }
    

    【讨论】:

      【解决方案2】:

      尝试使用 PowerShell 类的 AddCommand 方法。

      ps.AddCommand("import-module Lync");
      

      或者你可以使用 Runspace 类,你可以在这里找到一个例子:http://www.codeproject.com/Articles/18229/How-to-run-PowerShell-scripts-from-C

      【讨论】:

      • 不高兴,我以前也试过。 ps.AddCommand("import-module") 后跟 ps.AddArgument("Lync");
      • 它只是说,该术语不被识别为 cmdlet、函数、脚本文件或可运行程序的名称。所以模块应该以另一种方式添加。
      猜你喜欢
      • 1970-01-01
      • 2016-11-12
      • 2011-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多