如何正确配置system.io.directoryinfo.format.ps1xml自定义显示格式
自定义System.IO.DirectoryInfo格式化配置示例
步骤1:导出默认格式文件
先导出默认的System.IO.DirectoryInfo格式模板作为修改基础:
Export-FormatData -TypeName System.IO.DirectoryInfo -Path .\CustomDirectoryInfo.Format.ps1xml
步骤2:修改后的完整配置文件
替换导出文件的内容为以下代码,满足“移除目录名称分组、隐藏表头、指定显示属性”的需求:
<?xml version="1.0" encoding="utf-8"?> <Configuration> <ViewDefinitions> <View> <Name>CustomDirectoryInfoView</Name> <ViewSelectedBy> <TypeName>System.IO.DirectoryInfo</TypeName> <!-- 若需同时应用到文件,保留下方行;否则删除 --> <TypeName>System.IO.FileInfo</TypeName> </ViewSelectedBy> <TableControl> <!-- 保留表头节点但设空标签,避免加载报错同时隐藏表头 --> <TableHeaders> <TableColumnHeader> <Label></Label> <Width>20</Width> </TableColumnHeader> <TableColumnHeader> <Label></Label> <Width>10</Width> </TableColumnHeader> <TableColumnHeader> <Label></Label> <Width>25</Width> </TableColumnHeader> <TableColumnHeader> <Label></Label> <Width>30</Width> </TableColumnHeader> </TableHeaders> <TableRowEntries> <TableRowEntry> <TableColumnItems> <TableColumnItem> <PropertyName>Basename</PropertyName> </TableColumnItem> <TableColumnItem> <PropertyName>Extension</PropertyName> </TableColumnItem> <TableColumnItem> <PropertyName>LastAccessTime</PropertyName> <FormatString>{0:yyyy-MM-dd HH:mm:ss}</FormatString> </TableColumnItem> <TableColumnItem> <ScriptBlock>$_.DirectoryName</ScriptBlock> </TableColumnItem> </TableColumnItems> </TableRowEntry> </TableRowEntries> </TableControl> </View> </ViewDefinitions> </Configuration>
步骤3:导入自定义格式文件
执行以下命令加载修改后的配置:
Update-FormatData -PrependPath .\CustomDirectoryInfo.Format.ps1xml
关键修改说明
- 移除目录名称分组:删除默认配置中的
<GroupBy>节点,彻底取消表头上方的目录名称显示。 - 避免加载报错:PowerShell的
TableControl要求必须存在<TableHeaders>节点,因此保留该节点但将所有表头标签设为空,既满足结构要求,又视觉上隐藏表头。 - 指定显示属性:
- 直接使用
Basename、Extension、LastAccessTime属性 - 用
$_.DirectoryName脚本块输出父文件夹路径,比Directory属性更直观(Directory会输出DirectoryInfo对象,此处直接显示路径)
- 直接使用
- 列宽调整:通过
<Width>节点控制各列宽度,避免内容挤压。
常见报错排查
之前出现的Update-FormatData加载错误,通常是以下原因:
<TableHeaders>列数与<TableRowEntries>列数不匹配- 缺少必要的XML节点(如
TableControl必须包含TableHeaders和TableRowEntries) - XML语法错误(标签未闭合、编码问题等)
内容的提问来源于stack exchange,提问作者gaberiel__
相关产品推荐
相关产品推荐

