【发布时间】:2011-11-07 22:55:19
【问题描述】:
我正在开发一个 asp.net 站点,我们的安全区域将使用它来管理 Exchange 环境中的邮箱等。在该站点中,我调用各种 PowerShell 命令,然后通过 C# 处理这些结果。在一个特定实例中,我想显示所有未继承的邮箱权限。
这是我执行此操作的代码部分:
Collection<PSObject> results;
results = thisPipeline.Invoke();
myRunSpace.Close();
foreach (PSObject obj in results)
{
//Don't include inherited rights
if (obj.Properties["IsInherited"].Value.ToString().ToLower() != "true")
{
//Don't include permissions that are explicitly denied
if (obj.Properties["Deny"].Value.ToString().ToLower() != "true")
{
if (obj.Properties["User"].Value.ToString().ToLower() != "nt authority\\self")
{
TableRow permissionRow = new TableRow();
TableCell permissionUserCell = new TableCell();
TableCell permissionRightsCell = new TableCell();
Label permissionUserLabel = new Label();
Label permissionRightsLabel = new Label();
permissionUserLabel.Text = obj.Properties["User"].Value.ToString();
//This is my problem
permissionRightsLabel.Text = obj.Properties["AccessRights"].Value.ToString();
permissionUserCell.Controls.Add(permissionUserLabel);
permissionRightsCell.Controls.Add(permissionRightsLabel);
permissionRow.Controls.Add(permissionUserCell);
permissionRow.Controls.Add(permissionRightsCell);
table.Controls.Add(permissionRow);
}
}
}
}
这会导致表格的访问权限列显示 Microsoft.Exchange.Management.RecipientTasks.MailboxRights[]。
如果我尝试执行 foreach,我会收到编译器错误。
CS1579:foreach 语句无法对“System.Management.Automation.PSPropertyInfo”类型的变量进行操作,因为 'System.Management.Automation.PSPropertyInfo' 不包含 'GetEnumerator' 的公共定义
我找到了很多关于如何通过直接 PowerShell 访问这些值的示例,但我不知道如何通过 C# 访问它们。
【问题讨论】:
-
请不要在标题中添加“C#/PowerShell:”之类的内容。在Stack Overflow 上,我们为此目的使用标签。
-
不能只使用
Value属性访问值吗?
标签: c# powershell exchange-server