C#初心者のプロパティを介して、ネストされたPowerShellのオブジェクトの値を取得します。私がしようとしているものが可能かどうかは分かりません。 基本的に、私はC#で PowerShellのオブジェクト内のシステムオブジェクト配列のプロパティを読み取るしようとしています。ここでC位
簡単にするため、ここでは同様の出力あり、基本的なPowerShellのコードです:物事のC#の側で
$object = New-Object -TypeName PSObject
$object | Add-Member -MemberType NoteProperty -Name "Name" -Value "Yad"
$object | Add-Member -MemberType NoteProperty -Name "Title" -Value "C# Noob"
$object | Add-Member -MemberType NotePropety -Name "Machine Services" -Value (Get-Service)
return $object
が、私は以下のようにプロパティをマッピングすることにより、結果をフェッチすることができる午前:
これによりvar shell = PowerShell.Create();
shell.Commands.AddScript("C:\\Scripts\\Powershell\\TestScript.ps1 -user " + userName);
Collection<PSObject> results = shell.Invoke();
Profile userProfile = new Profile(); //Profile class is declared prior this line
foreach (PSObject psObject in results)
{
userProfile.Name = Convert.ToString(psObject.Properties["Name"].Value);
userProfile.Title= Convert.ToString(psObject.Properties["Title"].Value);
userProfile.MachineServices= psObject.Properties["Machine Services"].Value;
}
、「USERPROFILE」オブジェクトは、PowerShellの出力に相当します。
は今、「MachineServices」プロパティは、プロパティの独自のセット(ステータス、名前、およびPowerShellでのDisplayName)を含むオブジェクトです。これらのプロパティを呼び出して値を取得することは可能ですか?
私は、PowerShellスクリプトが完全に独立しており、プロパティはC#のコード前ランタイムに不明であるとして当然のことながら、私はエラーを取得し、以下のようなものを試してみましたけど。
userProfile.MachineServices.Status
任意のアイデア?
あなたトニに感謝。これを少し遅らせて、すでにその日のために詰め込んだ。私は明日最初にこれを試し、それがどうなるかを教えてくれるでしょう。 – Yad