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

最佳答案

知道了,该模块需要通过其完整路径导入,并且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);
    }
}

关于c# - 在C#中导入PowerShell模块,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17070747/

10-16 10:18