C#powershell对象作为数据源

时间:2015-08-27 01:30:06

标签: c# powershell objectdatasource psobject

问题的骨头: 我正在尝试填充ComboBox,甚至是用于Windows窗体的ListBox以及标准数组和类定义,它使用DataSources和相关的ValueMember和DisplayMember工作得很好。

当我尝试使用返回的PSObjects集合(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()";
}

基本背景是DistributionGroupsCollection<PSObject>,其成员为DistinguishedNameSamAccountName

使用此处显示的代码,DisplayMember将通过ToString方法显示整个PSObject值,为我提供:@{SamAccountName=AA_ Officer; DistinguishedName=CN=AA\+ Officer,OU=Administration,OU=Distribution Groups,OU=Resources,OU=Groups,DC=Domain,DC=MadeUp}

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

有没有我缺少的东西,或者没有办法有效地做这个没有自我定义一个单独转移PSObject成员的数组?

更新: 经过一些测试后,似乎DataSource,更具体地说是Value / Display成员只接受LAST参数。与给定的"Members[\"DistinguishedName\"].Value.ToString()"一样,它实际上只使用ToString()部分。

这是Value / Display Member属性的预期行为吗?有没有办法让我使用完整的定义?

0 个答案:

没有答案