在Windows系统下,使用cmd命令或者脚本查询磁盘占用情况,类似与Linux系统中使用du -h -d 1命令

设置执行脚本的权限: 以管理员身份打开PowerShell,执行以下命令。

# RemoteSigned允许本地创建的脚本运行,但是远程下载的脚本必须由信任的发布者签名。
Set-ExecutionPolicy RemoteSigned

脚本: 在Windows系统下,使用cmd命令或者脚本查询磁盘占用情况,类似与Linux系统中使用du -h -d 1命令。

# $Error数组在PowerShell会话期间会一直累积,因此如果在多次运行命令后希望清除错误历史记录,可以使用$Error.Clear()
$Error.Clear()

# 定义一个总容量大小参数
$totalSize = 0

# 获取当前目录下的子文件夹(-ErrorAction SilentlyContinue参数排除没有权限的文件夹)
$folders = Get-ChildItem -Directory -ErrorAction SilentlyContinue

# 定义一个数组
$resultArray = @()

# 循环遍历子文件夹
foreach ($folder in $folders) {
	# 获取子文件夹全名称(绝对路径)
    $folderPath = $folder.FullName
	
	# 排除指定的子文件夹
    #if ($folderPath -eq 'C:\Windows') {
      #  continue  # 跳过当前循环,不处理这个文件夹
    #}
	
	# 遍历子文件夹并统计大小
    $folderSize = (Get-ChildItem -Recurse $folderPath -File -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum).Sum

	# 转换为MB格式
    $folderSizeInMB = $folderSize / 1MB
	# 计算总容量大小
    $totalSize += $folderSize

    # 定义每一个子文件对象并将遍历的结果进行赋值
    $resultObject = [PSCustomObject]@{
        'Folder' = $folderPath
		# 定义文件大小Size属性,赋值时保留两位小数
        'Size' = "{0:F2}" -f $folderSizeInMB + ' MB'
    }

    # 循环将每一个对象添加到数组中
    $resultArray += $resultObject
}

# 定义一个总容量大小对象并将遍历的结果进行赋值
$totalSizeInMBObject = [PSCustomObject]@{
	'Folder' = "Total Size"
	'Size' = "{0:F2}" -f ($totalSize / 1MB) + ' MB'
}
# 将总容量大小添加到数组对象中
$resultArray += $totalSizeInMBObject

# $Error变量包含了在PowerShell会话期间发生的所有错误的数组
if ($Error) {
	foreach ($err in $Error) {
		# 输出没有访问权限的文件目录
		Write-Host "Error occurred: $($err.Exception.Message)"
	}
}
	
# 使用Format-Table定义格式,Folder列左对齐,Size列右对齐
$resultArray | Format-Table -Property @{Label='Folder'; Expression={$_.Folder}; Alignment='left'}, 
									  @{Label='Size'; Expression={$_.Size}; Alignment='right'} -AutoSize

执行脚本: 文件名后缀.ps1

# 当前路径下执行
./test.ps1
# 绝对路径执行
& "D:\test.ps1"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值