如何使用PowerShell查找计算机上的大文件
时间:2020-01-09 10:46:24 来源:igfitidea点击:
当系统警告我们本地驱动器上的可用空间即将用完时,管理员首先要做的是查找占用大量空间的所有大文件。要搜索新文件,可以使用Windows资源管理器(有几个预定义的按大小搜索的模板)、我们最喜欢的文件管理器或者第三方工具。但是,与PowerShell不同,所有这些工具都需要安装。让我们考虑使用PowerShell在本地计算机驱动器上快速搜索大型文件的示例。
我们可以使用Get-ChildItem
cmdlet列出特定目录(包括子文件夹)中的文件及其尺寸。这个cmdlet可以在整个磁盘或者特定文件夹(例如,用户配置文件和任何其他文件夹)中搜索文件。
让我们列出磁盘C:\上最大的10个文件:
Get-ChildItem c:\ -r| sort -descending -property length | select -first 10 name, Length
根据磁盘大小和其中的文件数,完成该命令可能需要一些时间。
–r(Recurse)键表示将递归搜索所有子文件夹。我们可以使用 –depth参数 将检查限制在某个深度级别。如果不指定路径,则搜索当前目录下的所有子文件夹。
如我们所见,我们得到了磁盘上按降序排列的10个最大文件的列表。
提示。即使使用管理员权限访问某些目录时,Get-ChildItem cmdlet也可能返回拒绝访问错误:
Get-ChildItem : Access to the path 'C:\Windows\CSC' is denied. At line:1 char:1 + Get-ChildItem c:\ -r| sort -descending -property length | select -fir ... + ~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : PermissionDenied: (C:\Windows\CSC:String) [Get-ChildItem**, UnauthorizedAccessException + FullyQualifiedErrorId : DirUnauthorizedAccessError,Microsoft.PowerShell.Commands.GetChildItemCommand
要消除此类错误,请使用 -ErrorAction SilentlyContinue参数
使用 -Force选项显示用户无法访问的隐藏文件和系统文件。
如我们所见,文件大小以字节为单位显示。为了方便起见,它们可以转换成兆字节。还可以显示存储找到的文件的文件夹:
Get-ChildItem c:\ -r -ErrorAction SilentlyContinue –Force |sort -descending -property length | select -first 10 name, DirectoryName, @{Name="MB";Expression={[Math**::round($_.length / 1MB, 2)}}
可以使用Out-GridViewcmdlet将生成的表转换为方便的图形表:
Get-ChildItem c:\ -r|sort -descending -property length | select -first 10 name, DirectoryName, @{Name="MB";Expression={[Math**::round($_.length / 1MB, 2)}} | Out-GridView
类似地,我们可以找到大于某个大小(例如500 MB)的所有文件:
$size=500*1024*1024 GCi C:\ -recurse -ErrorAction SilentlyContinue –Force | where-object {$_.length -gt $size} | Sort-Object length | ft fullname
我们可以将文件列表导出到CSV文件中,如下所示:
GCi C:\ -recurse | where-object {$_.length -gt $size} | Sort-Object length | ft fullname | Export-Csv c:\pc\LargeFiles_Report.csv