[玩转系统] PowerShell:在 Windows 中获取磁盘上的文件夹大小
作者:精品下载站 日期:2024-12-14 23:07:45 浏览:12 分类:玩电脑
PowerShell:在 Windows 中获取磁盘上的文件夹大小
大多数 Windows 用户都知道检查文件夹大小的最简单方法是在文件资源管理器中打开文件夹属性。更有经验的用户更喜欢使用第三方工具,例如 TreeSize 或 WinDirStat。但是,如果您想获得有关特定目录中文件夹大小的更详细统计信息或排除某些文件类型,您最好使用PowerShell功能。在本文中,我们将向您展示如何使用 PowerShell 快速获取磁盘上特定文件夹(以及所有子文件夹)的大小。
您可以使用 Get-ChildItem (
gci
别名)和测量对象 (
measure
alias) cmdlet 用于获取 PowerShell 中文件和文件夹(包括子文件夹)的大小。第一个 cmdlet 允许您根据指定条件获取指定目录中的文件列表(具有大小),第二个 cmdlet 执行算术运算。
提示。在之前的一篇文章中,我们演示了如何在 PowerShell 中使用 Get-ChildItem cmdlet 查找磁盘上最大的文件。
例如,要获取 C:\ISO 文件夹的大小,请运行以下命令:
Get-ChildItem C:\ISO | Measure-Object -Property Length -sum
正如您所看到的,该目录中文件的总大小显示在 Sum 字段中,大约为 2.1 GB(大小以字节为单位)。
要将大小转换为更方便的 MB 或 GB,请使用以下命令:
(gci c:\iso | measure Length -s).sum / 1Gb
或者 :
(gci c:\iso | measure Length -s).sum / 1Mb
要将结果四舍五入到小数点后两位,请运行以下命令:
"{0:N2} GB" -f ((gci c:\iso | measure Length -s).sum / 1Gb)
您可以使用 PowerShell 计算目录中某种类型的所有文件的总大小。例如,您想要获取文件夹中所有 ISO 文件的总大小:
(gci c:\iso *.iso | measure Length -s).sum / 1Mb
上面显示的命令允许您仅获取指定目录中文件的总大小。如果目录中有子文件夹,则不计算子文件夹中文件的大小。要获取目录(包括子目录)中文件的总大小,请使用
-Recurse
范围。让我们获取 C:\Windows 文件夹中文件的总大小:
"{0:N2} GB" -f ((gci -force c:\Windows -Recurse -ErrorAction SilentlyContinue| measure Length -s).sum / 1Gb)
为了考虑隐藏文件和系统文件的大小,我还使用了 -force 参数。
因此,我的本地驱动器上的 C:\Windows 大小约为 40 GB(脚本忽略 NTFS 压缩)。
提示。为了防止目录访问错误(PermissionDenied -> DirUnauthorizedAccessError),请使用
-ErrorAction SilentlyContinue
范围。
如果目录包含符号链接或硬链接,则此脚本会错误地计算目录的大小。例如,
C:\Windows
文件夹包含许多指向 WinSxS 文件夹(Windows 组件存储)中文件的硬链接。因此,此类文件可以被计数多次。要忽略结果中的硬链接,请使用以下命令(需要很长时间才能完成):
"{0:N2} GB" -f ((gci -force C:\windows -Recurse -ErrorAction SilentlyContinue | Where-Object { $_.LinkType -notmatch "HardLink" }| measure Length -s).sum / 1Gb)
如您所见,Windows 文件夹的实际大小稍小一些。
您可以使用过滤器来选择计算最终大小时要考虑的文件。例如,您可以获得 2020 年创建的文件的大小:
(gci -force c:\ps -Recurse -ErrorAction SilentlyContinue | ? {$_.CreationTime -gt ‘1/1/20’ -AND $_.CreationTime -lt ‘12/31/20’}| measure Length -s).sum / 1Gb
可以获取指定目录下所有一级子文件夹的大小。例如,您想要获取文件夹 C:\Users 中所有用户配置文件的大小。
gci -force 'C:\Users'-ErrorAction SilentlyContinue | ? { $_ -is [io.directoryinfo] } | % {
$len = 0
gci -recurse -force $_.fullname -ErrorAction SilentlyContinue | % { $len += $_.length }
$_.fullname, '{0:N2} GB' -f ($len / 1Gb)
}
%
是一个别名
foreach-object
环形。
我们继续。假设您的任务是查找系统硬盘根目录中每个目录的大小,并将信息以方便的表格形式呈现以供分析,并且能够按文件夹大小排序。
要获取有关系统 C:\ 驱动器上目录大小的信息,请运行以下 PowerShell 脚本:
$targetfolder='C:\'
$dataColl = @()
gci -force $targetfolder -ErrorAction SilentlyContinue | ? { $_ -is [io.directoryinfo] } | % {
$len = 0
gci -recurse -force $_.fullname -ErrorAction SilentlyContinue | % { $len += $_.length }
$foldername = $_.fullname
$foldersize= '{0:N2}' -f ($len / 1Gb)
$dataObject = New-Object PSObject
Add-Member -inputObject $dataObject -memberType NoteProperty -name “foldername” -value $foldername
Add-Member -inputObject $dataObject -memberType NoteProperty -name “foldersizeGb” -value $foldersize
$dataColl += $dataObject
}
$dataColl | Out-GridView -Title “Size of subdirectories”
正如您所看到的,表格的图形视图应该出现在系统驱动器 C:\ 根目录中的所有文件夹及其大小的位置(该表格是由
Out-GridView
命令)。通过单击列标题,您可以按大小对文件夹进行排序。您还可以将结果导出到 CSV (
| Export-Csv folder_size.csv
) 或 Excel 文件。
如果您在 PowerShell 脚本中使用目录大小检查,则可以创建一个单独的函数:
function Get-FolderSize {
[CmdletBinding()]
Param (
[Parameter(Mandatory=$true,ValueFromPipeline=$true)]
$Path
)
if ( (Test-Path $Path) -and (Get-Item $Path).PSIsContainer ) {
$Measure = Get-ChildItem $Path -Recurse -Force -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum
$Sum = '{0:N2}' -f ($Measure.Sum / 1Gb)
[PSCustomObject]@{
"Path" = $Path
"Size($Gb)" = $Sum
}
}
}
要使用该函数,只需运行带有文件夹路径作为参数的命令:
Get-FolderSize ('C:\PS')
您可以使用本地 PowerShell 功能通过以下方式检查远程计算机上的文件夹大小:
Invoke-Command
(PowerShell 远程处理)cmdlet。
Invoke-Command -ComputerName hq-srv01 -ScriptBlock ${Function:Get-FolderSize} -ArgumentList 'C:\PS'
这些命令适用于所有 PowerShell 版本,包括较新版本的 PowerShell Core 7.x。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag