Я работаю на сайте 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 #.