9

PowerShell を使用して Lync と対話する C# コードを作成しようとしています。Lync コマンドレットを実行する前に、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 に答える