在C#中导入PowerShell模块

11

我正试图使用 PowerShell 编写一些 C# 代码与 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模块吗?

2个回答

18

明白了,需要使用完整路径导入模块,并且64位和32位powershell的执行策略都需要设置为Unrestricted(或者根据您的情况设置为其他任何非Restricted选项)。这是代码:

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);
    }
}

-3

没戏,我之前也试过了。ps.AddCommand("import-module") 然后是 ps.AddArgument("Lync"); - NullPointer
它只是说,该术语未被识别为 cmdlet、函数、脚本文件或可操作程序的名称。因此,模块应以另一种方式添加。 - JayDee

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接