Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#powershell对象作为数据源_C#_Powershell_Objectdatasource_Psobject - Fatal编程技术网

C#powershell对象作为数据源

C#powershell对象作为数据源,c#,powershell,objectdatasource,psobject,C#,Powershell,Objectdatasource,Psobject,问题的核心是: 我正在尝试为Windows窗体和标准数组及类定义填充一个组合框,甚至是一个列表框,它使用数据源和相关的ValueMember和DisplayMember非常有效 当我尝试使用返回的PSObject集合(powershell对象)时,问题就出现了 以下是我尝试过的代码部分: private void PopulateGroups() { // DistributionGroups is a Collection<PSObject> Distributio

问题的核心是: 我正在尝试为Windows窗体和标准数组及类定义填充一个组合框,甚至是一个列表框,它使用数据源和相关的ValueMember和DisplayMember非常有效

当我尝试使用返回的PSObject集合(powershell对象)时,问题就出现了

以下是我尝试过的代码部分:

private void PopulateGroups()
{
    // DistributionGroups is a Collection<PSObject>
    DistributionGroups.Clear();
    DistributionGroups = GroupADConnection.GroupsInOU("OU=Distribution Groups,OU=Resources,OU=Groups,DC=Domain,DC=MadeUp");

    cmbDistributionGroups.DataSource = DistributionGroups;

    string test = DistributionGroups[5].Members["DistinguishedName"].Value.ToString();

    cmbDistributionGroups.DisplayMember = @"Members[""SamAccountName""].Value.ToString()";
    cmbDistributionGroups.ValueMember = "Members[\"DistinguishedName\"].Value.ToString()";
}
private void populategroup()
{
//DistributionGroup是一个集合
DistributionGroup.Clear();
DistributionGroups=GroupADConnection.GroupsInOU(“OU=通讯组,OU=资源,OU=组,DC=域,DC=MadeUp”);
CMBDributionGroups.DataSource=DistributionGroups;
字符串测试=DistributionGroups[5]。成员[“DistributionName”]。值。ToString();
CMBDributionGroups.DisplayMember=@“Members[“SamAccountName”“]”。Value.ToString();
CMBDributionGroups.ValueMember=“Members[\”DiscrimitedName\”].Value.ToString();
}
基本背景是
DistributionGroups
是一个
集合
,其中包含成员
distributedname
SamAccountName

在这里显示代码时,
DisplayMember
将通过ToString方法显示整个PSObject值,给我:
{SamAccountName=AA_uuo-Officer;discriminatedname=CN=AA\+Officer,OU=Administration,OU=Distribution Groups,OU=Resources,OU=Groups,DC=Domain,DC=MadeUp}

我已经尝试了两种方法将引号字符放入字符串中,这样它将获得正确的属性。
test
String对象将正确获取PSObject所需的成员

如果不使用单独传输的PSObject成员自定义数组,我是否缺少一些东西,或者无法有效地做到这一点

更新: 经过更多的测试后,数据源(更具体地说是Value/Display成员)似乎只接受最后一个参数。对于给定的:
“Members[\“differentiedname\”].Value.ToString()”
它实际上只使用
ToString()
部分


这是值/显示成员属性的预期行为吗?我有没有办法让它使用完整的定义?

我很好奇,为什么你要使用PowerShell-in-C来做这件事,而不是直接使用
System.DirectoryServices
。继承了很多PowerShell脚本,我试图在开始新的工作之前使用这些脚本。脚本工作正常,但很难向技术水平较低的人解释。最后,我可能不得不重写,但我真的不想弄乱一个工作脚本。我很好奇,为什么你要使用PowerShell-In-C来完成这项工作,而不是直接使用
System.DirectoryServices
。继承了许多PowerShell脚本,并在开始新的工作之前尝试使用这些脚本。脚本工作正常,但很难向技术水平较低的人解释。最后,我可能不得不重写,但我真的不想弄乱一个工作脚本。