如何通过 c# cmdlet 在 PowerShell 中显示带有 .ps1xml 文件的嵌套对象
本文关键字:ps1xml 文件 对象 嵌套 显示 何通过 cmdlet PowerShell | 更新日期: 2023-09-27 18:30:48
嗨,我有分层对象结构,例如
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;}
}
我创建了一个格式化的输出.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和姓名,但不显示部门名称。
我认为这是因为它在嵌套对象中
任何人都可以帮我显示部门名称吗
我遇到了类似的问题,来到了这个博客。对我来说,情况通过如下所示的简单更改得到解决 - 使用 ScriptBlock 而不是 PropertyName 标签,当然,确保调试窗口中的值不为 null:
<TableColumnItem>
<ScriptBlock>$_.Department.Name</ScriptBlock>
</TableColumnItem>