我正在尝试获取在日期时间范围内创建的文件名。
[datetime]$start = '2020-06-01 10:00:00'
[datetime]$end = '2020-06-01 11:00:00'
Get-ChildItem -Path C:\Test -Name | Where-Object { $_.LastWriteTime -gt $start -and $_.LastWriteTime -lt $end }
为什么这段代码没有给我任何回报?
答案 0 :(得分:3)
使用-Name
参数仅将文件名作为String类型而不是对象返回。因此,它没有LastWriteTime
属性可供搜索。
PS C:\> (gci)[0].GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True DirectoryInfo System.IO.FileSystemInfo
PS C:\> (gci -Name)[0].GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True String System.Object
PS C:\> gci
Directory: C:\
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2/11/2019 12:08 AM %homeshare%
d----- 5/12/2019 2:54 PM Code
d----- 21/03/2019 5:11 PM Intel
d----- 28/10/2019 9:54 AM Microsoft
d----- 13/12/2019 5:15 PM NVIDIA
d-r--- 28/05/2020 7:27 PM Program Files
d-r--- 4/05/2020 11:00 AM Program Files (x86)
d-r--- 17/02/2020 1:43 PM Users
d----- 31/05/2020 10:50 PM Windows
VS -Name
PS C:\> gci -Name
%homeshare%
Code
Intel
Microsoft
NVIDIA
Program Files
Program Files (x86)
Users
Windows
您可以过滤对象,然后根据需要选择名称:
PS C:\> gci | Where-Object { $_.LastWriteTime -gt (Get-Date -Year 2020 -Month 1 -Day 10) } | Select-Object Name
Name
----
Program Files
Program Files (x86)
Users
Windows
SUService.log
如果您需要文件路径而不是文件名,则可以使用FullName
:
FullName
--------
C:\Program Files
C:\Program Files (x86)