【发布时间】:2016-10-16 11:41:39
【问题描述】:
这里是 C# 新手。我不确定我的目标是否可能。 基本上,我试图在 C# 中读取系统对象数组 within 的 Powershell 对象的属性。
为简单起见,下面是一个基本的 Powershell 代码,它具有类似的输出:
$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
在 C# 方面,我可以通过如下映射属性来获取结果:
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 中的状态、名称和显示名称)。是否可以调用这些属性并检索它们的值?
我尝试了类似于下面的方法,但当然,我得到了一个错误,因为 Powershell 脚本是完全独立的,并且在运行时之前 C# 代码不知道这些属性。
userProfile.MachineServices.Status
有什么想法吗?
【问题讨论】:
标签: c# arrays list powershell object