私はpowershellを使用してこの簡単なプログラムを持っています。これは単なる概念の証明です、私はより大きなアプリで同じコードを使用しています。問題は、以下のコードの一部のプロパティの値を読み取ることができないことです。 Valueプロパティを読み取ると、GetValueInvocationExceptionがスローされます。PowerShellオブジェクトのプロパティを列挙すると、
これは実際には、PowerShell SDKに付属のMicrosoftサンプルプロジェクトの1つでも発生します。なぜこれがあり、解決策はありますか?
static void Main(string[] args)
{
var powerShell = System.Management.Automation.PowerShell.Create();
var runspace = RunspaceFactory.CreateRunspace();
runspace.Open();
Runspace.DefaultRunspace = runspace;
powerShell.Runspace = runspace;
powerShell.AddScript("Get-Process");
var results = powerShell.Invoke();
foreach (var prop in results.First().Properties)
{
try
{
Console.WriteLine(prop.Name + " : " + prop.Value);
}
catch (Exception e)
{
Console.WriteLine(string.Format("Exception {0} on {1}", e.GetType(), prop.Name));
}
}
Console.ReadKey();
}
あなたはおそらく正しいでしょう。私はそれらの特性を無視するべきです。私はこれを一般的に行っており、BaseObjectが何であるかをコードでは分かっていません。 PowerShell Job APIを使用していた前に(そして変更したい)。それで私はそのような問題はなかった。しかし、返されたプロパティを見ると、私の例で例外を投げるプロパティは、Jobアプローチを使用しているときに利用できないことがわかります。だから私はtry/catchが行く方法だと思います。ありがとう:) – LinusK
はい、試して/キャッチ私のカスタムホストでは、未知のオブジェクト(読み込み、プロパティゲッターがスロー可能性がありますオブジェクト)を扱うときに何をしています。 –