通过 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();

通过 C# 交换电源外壳,无法正确显示结果

您希望字符串表示形式是什么? 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>