使用CreationTime而不是LastWriteTime获取Get-ChildItem?

时间:2012-09-26 16:59:22

标签: powershell

如果您使用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 。其他一切都应该是一样的。有什么想法吗?

5 个答案:

答案 0 :(得分:5)

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

选择它
Get-ChildItem | Select-Object Mode,CreationTime,Length,Name

答案 1 :(得分: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>

答案 2 :(得分:3)

如果您想要显示属性CreationTime而不是LastWriteTime,那么您可以将Get-ChildItem的输出传递给Select-Object并指定要选择的属性:

Get-ChildItem | Select Mode, CreationTime, Length, Name

答案 3 :(得分:2)

在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

答案 4 :(得分: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。它将按修改日期列出文件。