9

我正在尝试编写一些 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 模块吗?

4

2 回答 2

15

明白了,模块需要通过其完整路径导入,并且 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);
    }
}
于 2013-06-12T16:59:21.517 回答
-3

尝试使用 PowerShell 类的 AddCommand 方法。

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

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

于 2013-06-12T16:43:18.903 回答