通过 C# 交换电源外壳,无法正确显示结果
本文关键字:显示 结果 交换 电源 外壳 通过 | 更新日期: 2023-09-27 18:33:55
我有以下代码来执行交换cmdlet,但是当我得到结果时,它给了我一个这样的值:
Microsoft.交换.管理.收件人任务.邮箱AcePresentationObject
如何获取此对象的文本值,而不是对象本身?
这是我用来获取值的代码。
powershell.Runspace = runspace;
powershell = PowerShell.Create();
PSCommand command = new PSCommand();
command.AddCommand("Get-MailboxPermission");
command.AddParameter("Identity", "myname");
powershell.Commands = command;
powershell.Runspace = runspace;
Collection<PSObject> result = powershell.Invoke();
StringBuilder sb = new StringBuilder();
foreach (PSObject ps in result)
{
sb.AppendLine(ps.ToString());
}
sb.AppendLine();
lbl.Text += sb.ToString();
您希望字符串表示形式是什么? ToString 为您提供类名(这是对象的默认行为)
您可以查看类定义以确定要显示的内容。
如果你想像Exchange shell一样显示它,你可以看看它的视图是如何在exchange.format.ps1xml中定义的 - 这是该文件的一个片段,似乎表明它显示了属性Identity,User,AccessRights,IsInherited和Deny。
或者,可以将管道更改为执行输出字符串(或格式表或其他任何内容),以便在它离开 PowerShell 之前已将其格式化为所需的字符串。
<View>
<Name>Microsoft.Exchange.Management.RecipientTasks.MailboxAcePresentationObject</Name>
<ViewSelectedBy>
<TypeName>Microsoft.Exchange.Management.RecipientTasks.MailboxAcePresentationObject</TypeName>
</ViewSelectedBy>
<TableControl>
<TableHeaders>
<TableColumnHeader>
<Label>Identity</Label>
<Width>20</Width>
</TableColumnHeader>
<TableColumnHeader>
<Label>User</Label>
<Width>20</Width>
</TableColumnHeader>
<TableColumnHeader>
<Label>AccessRights</Label>
</TableColumnHeader>
<TableColumnHeader>
<Label>IsInherited</Label>
<Width>11</Width>
</TableColumnHeader>
<TableColumnHeader>
<Label>Deny</Label>
<Width>5</Width>
</TableColumnHeader>
</TableHeaders>
<TableRowEntries>
<TableRowEntry>
<TableColumnItems>
<TableColumnItem>
<PropertyName>Identity</PropertyName>
</TableColumnItem>
<TableColumnItem>
<PropertyName>User</PropertyName>
</TableColumnItem>
<TableColumnItem>
<PropertyName>AccessRights</PropertyName>
</TableColumnItem>
<TableColumnItem>
<PropertyName>IsInherited</PropertyName>
</TableColumnItem>
<TableColumnItem>
<PropertyName>Deny</PropertyName>
</TableColumnItem>
</TableColumnItems>
</TableRowEntry>
</TableRowEntries>
</TableControl>
</View>