C#powershell对象作为数据源
问题的核心是: 我正在尝试为Windows窗体和标准数组及类定义填充一个组合框,甚至是一个列表框,它使用数据源和相关的ValueMember和DisplayMember非常有效 当我尝试使用返回的PSObject集合(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
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脚本,并在开始新的工作之前尝试使用这些脚本。脚本工作正常,但很难向技术水平较低的人解释。最后,我可能不得不重写,但我真的不想弄乱一个工作脚本。