2011-12-07 16 views
2

​​名前空間にある機能を使用して、C#に簡単なPowerShellコマンド出力を取得しようとしています。C#Exchange PowerShell pipeLine InvokeがNULLパラメータ値のCmdletInvocationExceptionを発生させています

私は自分のマシンにExchangeコンソールを持っており、コンソールからコマンドを正常に発行できますが、C#からはわかりません。

ここではいくつかの単純なサーバー情報を取得する必要がありますサンプルコードです:

static void Main(string[] args) 
{ 
    RunspaceConfiguration rsConfig = RunspaceConfiguration.Create(); 
    PSSnapInException snapInException = null; 
    PSSnapInInfo info = rsConfig.AddPSSnapIn("Microsoft.Exchange.Management.PowerShell.E2010", out snapInException); 

    using (Runspace myRunSpace = RunspaceFactory.CreateRunspace(rsConfig)) 
    { 
     myRunSpace.Open(); 

     using (Pipeline pipeLine = myRunSpace.CreatePipeline()) 
     { 
      Command serverCommand = new Command("Get-MailboxServer"); 

      pipeLine.Commands.Add(serverCommand); 
      Collection<PSObject> server = pipeLine.Invoke(); 
      foreach (PSObject cmdlet in server) 
      { 
       string cmdletName = cmdlet.Properties["Name"].Value.ToString(); 
       Console.WriteLine(cmdletName); 
      } 
     } 
    } 
} 

実際のエラーがpipeLine.Invoke()ライン上occurrs:

System.Management.Automation.CmdletInvocationException処理されていません
値をnullにすることはできません。
パラメータ名:パラメータ
ソース= System.Management.Automation

私には、例えば、パラメータを追加するサーバーのアイデンティティを試してみましたが、同じことが起こります:

using (Pipeline pipeLine = myRunSpace.CreatePipeline()) 
{ 
    Command serverCommand = new Command("Get-MailboxServer"); 
    serverCommand.Parameters.Add("Identity", mbServerName); 
    pipeLine.Commands.Add(serverCommand); 
    Collection<PSObject> server = pipeLine.Invoke(); 
} 
+0

snapInExceptionまたはinfoをチェックしていないことがわかります。 rsConfig.AddPSSnapIn呼び出しが失敗する可能性はありますか? –

答えて

0

私はコマンドを置き換えGet-Processとそれは正常に動作します。 (。Get-Mailboxserverはまた、任意のパラメータで取らない変種であっても)問題についてこのスレッド会談

Exchangeコマンドレットがどのように動作するかの問題であるように思わや代替ソリューションを提案している:http://social.technet.microsoft.com/Forums/en-US/exchangesvrdevelopment/thread/48da1346-f47e-4ba9-9747-428fe07b4492/

2

これらの行をapp.configファイルに追加してください。

<startup useLegacyV2RuntimeActivationPolicy="true"> 
    <supportedRuntime version="v4.0"/> 
</startup> 
関連する問題