2013-06-12 96 views
4

我正在嘗試編寫一些C#代碼來使用PowerShell與Lync進行交互,並且需要在執行Lync cmdlet之前導入Lync模塊。但是,我的代碼似乎沒有導入模塊,我不斷收到「get-csuser command not found」異常。這裏是我的代碼:在C中導入PowerShell模塊#

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模塊?

回答

7

心動不如行動,該模塊需要通過它的完整路徑導入,也爲雙方的執行策略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); 
    } 
}