2

我有以下执行交换 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();
4

1 回答 1

1

您希望字符串表示形式是什么?ToString 为您提供类名(这是对象的默认行为)

您可以查看类定义以确定要显示的内容。

如果您想像 Exchange shell 一样显示它,您可以查看它的视图是如何在 exchange.format.ps1xml 中定义的 - 这是该文件中的一个片段,似乎表明它显示了属性 Identity、User、AccessRights、IsInherited ,并拒绝。

或者,您可以更改您的管道以执行输出字符串(或格式表或其他),以便它在离开 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>
于 2012-05-13T03:29:09.537 回答