PowerShell-为什么Get-ChildItem不返回任何输出

时间:2020-06-03 00:56:54

标签: powershell

我正在尝试获取在日期时间范围内创建的文件名。

[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 }

为什么这段代码没有给我任何回报?

1 个答案:

答案 0 :(得分:3)

使用-Name参数仅将文件名作为String类型而不是对象返回。因此,它没有LastWriteTime属性可供搜索。

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/get-childitem?view=powershell-7

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)