PowerShell 列出某个文件夹内的所有文件和文件夹
在 Windows PowerShell 驱动器中导航和操作其上面的项类似于操作 Windows 物理磁盘驱动器上的文件和文件夹。 本节讨论如何使用 PowerShell 处理特定文件和文件夹操作任务。
可以通过使用 Get-ChildItem 直接获取某个文件夹中的所有项目。 添加可选的 Force 参数以显示隐藏项或系统项。 例如,此命令将显示 Windows PowerShell 驱动器 C(它与 Windows 物理驱动器 C 相同)的直观内容:
Get-ChildItem -Path C:\ -Force
执行上面示例代码结果如下所示:
PS C:\Users\maxsu> Get-ChildItem -Path C:\ -Force
目录: C:\
Mode LastWriteTime Length Name
---- ------------- ------ ----
d--hs- 2019/10/27 8:05 $360Section
d--hs- 2017/8/31 20:14 $Recycle.Bin
d----- 2019/6/21 13:38 360RecoveryEnv
d-rhs- 2020/1/27 22:57 360SANDBOX
d----- 2020/1/2 21:37 360安全浏览器下载
d----- 2019/9/16 8:34 AppData
d----- 2017/6/28 4:57 Apps
da---- 2017/6/28 21:42 dell
d--hsl 2017/8/30 19:16 Documents and Settings
d----- 2019/1/10 20:44 downloads
d----- 2017/6/24 0:41 Drivers
d----- 2017/6/28 4:47 Intel
d----- 2019/12/13 22:31 kingsoft
d----- 2017/12/14 20:25 KuGou
d----- 2019/3/19 12:52 PerfLogs
d-r--- 2019/9/22 15:56 Program Files
d-r--- 2020/1/2 21:37 Program Files (x86)
d--h-- 2020/2/15 0:05 ProgramData
d--h-- 2019/8/4 23:02 Recovery
d--hs- 2020/2/11 18:57 System Volume Information
d-r--- 2019/8/4 23:08 Users
d----- 2020/2/15 0:05 Windows
d----- 2019/9/16 9:09 迅雷下载
-arh-- 2017/6/28 20:45 26397 dell.sdr
-arh-- 2017/6/24 0:51 23059 fiod.sdr
-a-hs- 2020/2/15 8:17 6833668096 hiberfil.sys
-a---- 2019/4/30 8:21 107 LibAntiPrtSc_ERROR.log
-a---- 2019/11/27 17:11 1113 LibAntiPrtSc_INFORMATION.log
-a-hs- 2020/2/15 0:07 2550136832 pagefile.sys
-a-hs- 2020/2/15 0:07 268435456 swapfile.sys
该命令将仅列出直接包含的项,类似于使用 Cmd.exe 的 DIR 命令或 UNIX shell 中的 ls。 为了显示包含的项,你还需要指定 -Recurse 参数。 (这可能需要相当长的时间才能完成。)列出 C 驱动器上的所有内容:
Get-ChildItem -Path C:\ -Force -Recurse
Get-ChildItem 可以使用其 Path、Filter、Include 和 Exclude 参数筛选项,但那些通常只基于名称。 还可以通过使用 Where-Object 基于项的其他属性执行复杂的筛选。
下面的命令用于查找上次于 2005 年 10 月 1 日之后修改,并且不小于 1 兆字节,也不大于 10 兆字节的 Program Files 文件夹中的所有可执行文件:
Get-ChildItem -Path $env:ProgramFiles -Recurse -Include *.exe | Where-Object -FilterScript {($_.LastWriteTime -gt '2005-10-01') -and ($_.Length -ge 1mb) -and ($_.Length -le 10mb)}