「GET-PSDrive」コマンドを使用して、PowerShell 6.0 からサーバーのドライブ情報を取得しようとしています。コマンドを PowerShell で直接実行すると、出力テーブル内に 'Used' と 'Free' の値が表示されますが、コードで同じコマンドを実行しても、Microsoft.Powershell.Sdk を使用しても 'Used' フィールドと 'Free' フィールドは表示されません。利用可能。
PSObject.Properties 配列の下に両方の項目がリストされていますが、値にアクセスしようとすると例外が発生します。
「このスレッドでスクリプトを実行できる実行空間がありません。System.Management.Automation.Runspaces.Runspace 型の DefaultRunspace プロパティで提供できます。呼び出そうとしたスクリプト ブロックは次のとおりです: ##」
以下は、私が取り組んでいる POC コードです。
using (var psCon = PowerShell.Create())
{
psCon.AddCommand("GET-PSDrive");
var psReturn = psCon.Invoke();
foreach (var psObj in psReturn)
{
var driveUsedValue = psObj.Properties["Used"].Value;
}
}
そのプロパティの値を取得することを期待していますが、値が評価されるたびに、利用可能な実行空間がないというエラーが表示されます。プロパティを調べると、それが ScriptProperty であることがわかります。では、その生成された値を取得するにはどうすればよいでしょうか?