我有以下执行交换 cmdlet 的代码,但是当我返回结果时,它会给我这样的值:
Microsoft.Exchange.Management.RecipientTasks.MailboxAcePresentationObject
如何获取此对象的文本值而不是对象本身?
这是我用来获取值的代码。
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 为您提供类名(这是对象的默认行为)
可以看看the class definition弄清楚你想显示什么。
如果你想像 Exchange shell 那样显示它,你可以看看它的 View 是如何在 exchange.format.ps1xml 中定义的——这是该文件的一个片段,它似乎表明它显示了属性身份、用户、 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>
关于c# - 通过 c# 交换 powershell 无法正确显示结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10567503/