在PowerShell中获取上次修改时间

时间:2013-12-17 11:44:35

标签: powershell

我在这里找到了搜索文件及其内容的代码,但是如何获得最后修改时间?

Get-ChildItem d:\* -filter $fname* | Select-String -Pattern "exit" | Write-Host - $_.Lastwritetime

2 个答案:

答案 0 :(得分:5)

您已经有上次修改时间:

CreationTime   = Created
LastWriteTime  = Modified
LastAccessTime = Accessed

有关详细信息,请参阅here

我认为您的问题是您使用的是Select-String,它会返回MatchInfo个对象,而您期望FileInfo

Get-ChildItem d:* -filter $fname* | Select-String -Pattern "exit" | group path | %{ (get-item $_.Name).LastWriteTime }

按路径对select-string的结果进行分组,然后枚举名称应该可以为您提供所需的内容。

答案 1 :(得分:0)

您可以使用Get-Member cmdlet轻松找到属性。例如,

gci test.txt | gm
# Output
   TypeName: System.IO.FileInfo

Name                      MemberType     Definition
----                      ----------     ----------
Mode                      CodeProperty   System.String Mode{get=Mode;}
AppendText                Method         System.IO.StreamWriter AppendText()
CopyTo                    Method         System.IO.FileInfo CopyTo(string destFileName)
...

另一种方法是使用GetType()来获取对象的类型。

(gci test.txt).GetType()

IsPublic IsSerial Name                  BaseType
-------- -------- ----                  --------
True     True     FileInfo              System.IO.FileSystemInfo

注意TypeName。这是一个.NET类,David已将其链接到the relevant MSDN documentation page

值得注意的是Get-Childitem多个结果类型。也就是说,当System.IO.FileSystemInfo定位文件时,您只会获得gci。当它定位目录时,您将获得一组System.IO.DirectoryInfo个对象。