9

如果你使用Get-ChildItem你会得到类似的东西

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----          3/1/2006   9:03 AM            Bluetooth Software
d---s         5/10/2006   8:55 AM            Cookies
d----          5/9/2006   2:09 PM            Desktop

没关系。我现在只想将LastWriteTime输出更改为CreationTime。其他一切都应该相同。有任何想法吗?

4

5 回答 5

7

您可以使用Select-Object或任何Format-*cmdlet选择它

Get-ChildItem | Select-Object Mode,CreationTime,Length,Name
于 2012-09-26T17:01:46.567 回答
5

对于显示列的一次性更改,管道连接到selectFormat-Table是最简单的。如果你想让它成为一个持久的改变,你需要处理控制 powershell 如何显示文件系统对象的格式文件。

不建议编辑现有格式文件(可能位于$env:SystemRoot\system32\WindowsPowershell\v1.0\FileSystem.format.ps1xml),因为该文件在底部有一个签名块。更改文件内容将使签名无效,这可能会导致问题。

相反,您可以定义自己的格式文件,该文件将覆盖默认格式文件。将以下文件另存为FileFormat.format.ps1xml并运行

Update-FormatData -Prepend c:\FileFormat.format.ps1xml

默认情况下,CreationTime将显示,而不是LastWriteTime.

格式文件内容(从真实格式文件复制,只是更改了相关位):

<Configuration>
    <SelectionSets>
        <SelectionSet>
            <Name>FileSystemTypes</Name>
            <Types>
                <TypeName>System.IO.DirectoryInfo</TypeName>
                <TypeName>System.IO.FileInfo</TypeName>
            </Types>
        </SelectionSet>
    </SelectionSets>
    <ViewDefinitions>
       <View>
            <Name>children</Name>
            <ViewSelectedBy>
                <SelectionSetName>FileSystemTypes</SelectionSetName>
            </ViewSelectedBy>
            <GroupBy>
                <PropertyName>PSParentPath</PropertyName> 
                <CustomControlName>FileSystemTypes-GroupingFormat</CustomControlName>  
            </GroupBy>
            <TableControl>
                <TableHeaders>
                   <TableColumnHeader>
                      <Label>Mode</Label>
                      <Width>7</Width>
                      <Alignment>left</Alignment>
                   </TableColumnHeader>
                    <TableColumnHeader>
                        <Label>CreationTime</Label>
                        <Width>25</Width>
                        <Alignment>right</Alignment>
                    </TableColumnHeader>
                    <TableColumnHeader>
                        <Label>Length</Label>
                        <Width>10</Width>
                        <Alignment>right</Alignment>
                    </TableColumnHeader>
                    <TableColumnHeader/>
                </TableHeaders>
                <TableRowEntries>
                    <TableRowEntry>
                        <Wrap/>
                        <TableColumnItems>
                            <TableColumnItem>
                                <PropertyName>Mode</PropertyName>
                            </TableColumnItem>
                            <TableColumnItem>
                                <ScriptBlock>
                                    [String]::Format("{0,10}  {1,8}", $_.CreationTime.ToString("d"), $_.CreationTime.ToString("t"))
                                </ScriptBlock>
                            </TableColumnItem>
                            <TableColumnItem>
                            <PropertyName>Length</PropertyName>
                            </TableColumnItem>
                            <TableColumnItem>
                                <PropertyName>Name</PropertyName>
                            </TableColumnItem>
                        </TableColumnItems>
                    </TableRowEntry>
                </TableRowEntries>
            </TableControl>
        </View>
    </ViewDefinitions>
</Configuration>
于 2012-09-26T20:24:04.490 回答
3

如果您的意思是要显示属性 CreationTime 而不是 LastWriteTime,则可以将 Get-ChildItem 的输出通过管道传输到 Select-Object 并指定要选择的属性:

Get-ChildItem | Select Mode, CreationTime, Length, Name
于 2012-09-26T17:01:37.567 回答
3

在 V3 中,您可以使用动态类型数据:

    PS III> # UNTESTED: if work...you can paste this in your profile
    PS III>
    PS III> Update-TypeData -TypeName System.IO.FileInfo,System.IO.DirectoryInfo -MemberName DFPR DefaultDisplayPropertySet Mode,CreationTime,Length,Name
于 2012-09-27T04:14:18.997 回答
0

请试试
> get-childitem | sort-object -property name, creationtime, lastwritetime

您将在 PowerShell 中看到如下所示:

 Directory: C:\project\CNN I\Maya                             

Mode                 LastWriteTime         Length Name 
----                 -------------         ------ ---- 
-a----         1/11/2021  11:36 PM          32187 ocean wake foam.JPG                                                   
-a----          1/6/2021  12:28 AM         121100 ocean_clean.ma                                                        
-a----          1/4/2021   3:59 PM         122199 ocean_clean_1.ma           

您看不到创建日期,但它实际上是按名称和创建日期 ( creationtime) 排序,然后是修改日期 ( lastwritetime)。如果您想验证这一点,请尝试> get-childitem | sort-object lastwritetime。它将按修改日期列出文件。

于 2021-03-13T22:02:10.173 回答