如何修改gci默认输出,替换LastWriteTime为CreationTime并保留名称列着色?
解决Get-ChildItem替换列后保留Name着色与原对象的问题
要同时实现替换LastWriteTime为CreationTime、保留Name列默认着色,且不丢失FileInfo/DirectoryInfo对象(支持后续管道操作),最可靠的方法是临时修改当前PowerShell会话的格式定义——这只会改变显示逻辑,完全不影响输出的原始对象。
操作步骤:
导出默认的文件系统对象格式
执行命令导出系统默认的FileInfo/DirectoryInfo格式定义到临时文件:Get-FormatData -TypeName System.IO.FileInfo,System.IO.DirectoryInfo | Export-FormatData -Path "$env:TEMP\CustomFileSystem.Format.ps1xml"修改格式文件中的列定义
打开生成的CustomFileSystem.Format.ps1xml文件,找到以下两处内容并修改:- 找到
<TableColumnHeader>下的<Label>LastWriteTime</Label>,替换为<Label>CreationTime</Label> - 找到对应的
<TableColumnItem>下的<PropertyName>LastWriteTime</PropertyName>,替换为<PropertyName>CreationTime</PropertyName>
- 找到
加载修改后的格式
执行命令让PowerShell优先使用自定义格式:Update-FormatData -PrependPath "$env:TEMP\CustomFileSystem.Format.ps1xml"
效果验证
直接运行gci(或Get-ChildItem),你会看到输出列已经替换为CreationTime,Name列的默认着色(文件夹蓝色、文件按类型着色)完全保留,且输出的仍然是原始的FileInfo/DirectoryInfo对象——后续可以直接管道到Copy-Item、Remove-Item等命令,完全不影响功能。
注意事项
- 这个修改仅对当前PowerShell会话有效,关闭窗口后自动失效,不会影响全局配置。
- 如果需要永久生效,可以将修改后的
.ps1xml文件放到PowerShell的格式目录(比如$PSHOME\Modules\YourModule\Format),并在配置文件中加载。
内容的提问来源于stack exchange,提问作者A.King
相关产品推荐
相关产品推荐

