我正在尝试编写一些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模块?
答案 0 :(得分:8)
知道了,模块需要通过其完整路径导入,并且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);
}
}
答案 1 :(得分:-2)
尝试使用PowerShell类AddCommand方法。
ps.AddCommand("import-module Lync");
或者你可以使用Runspace类,你可以在这里找到一个例子:http://www.codeproject.com/Articles/18229/How-to-run-PowerShell-scripts-from-C