如何显示到C#cmdlet来.ps1xml文件嵌套对象到PowerShell中(How to dis

2019-10-16 14:43发布

您好我有像heirarchial对象结构

   public class Department
   {
      public Guid ID {get; set;}
      public string Name{get; set;}
   }

   public class Employee
   {
      public Guid ID {get; set;}
      public string Name{get; set;}
      public Department Department {get;set;}
   }

我创建了一个formatedoutput.ps1xml文件显示在PowerShell中的员工对象

<?xml version="1.0" encoding="utf-8" ?>
<Configuration>
 <ViewDefinitions>
  <View>
        <Name>EmpView</Name>
    <ViewSelectedBy>
      <TypeName>Employee</TypeName>
    </ViewSelectedBy>

  <TableControl>
    <TableHeaders>
      <TableColumnHeader>
        <Width>16</Width>
      </TableColumnHeader>
      <TableColumnHeader>
        <Width>16</Width>
      </TableColumnHeader>
      <TableColumnHeader/>
    </TableHeaders>
    <TableRowEntries>
      <TableRowEntry>
        <TableColumnItems>
          <TableColumnItem>
            <PropertyName>ID</PropertyName>
          </TableColumnItem>
          <TableColumnItem>
            <PropertyName>Name</PropertyName>
          </TableColumnItem>
          <TableColumnItem>
            <PropertyName>Department.Name</PropertyName>
          </TableColumnItem>
        </TableColumnItems>
      </TableRowEntry>
    </TableRowEntries>
  </TableControl>
 </View>
 </ViewDefinitions>
</Configuration>

我已经在PS使用以下cmdlet注册我的XML文件

update-formatdata -prependpath c:\formatedoutput.ps1xml

它显示出表格放,它会显示员工ID和名称,但它不显示部门名称。

我认为它是因为它在嵌套的对象

任何人都可以请帮我在显示部门名称

Answer 1:

我面临着类似的问题,来到了这个博客。 对我来说,一发通过像下面一个简单的变化解析 - 使用脚本块,而不是属性名的标签,并ofcourse,确保值不在调试窗口无效:

<TableColumnItem>
    <ScriptBlock>$_.Department.Name</ScriptBlock>
</TableColumnItem>


文章来源: How to display nested objects with .ps1xml file through c# cmdlet into powershell