名前空間にある機能を使用して、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();
}
snapInExceptionまたはinfoをチェックしていないことがわかります。 rsConfig.AddPSSnapIn呼び出しが失敗する可能性はありますか? –