# 获取当前文件夹下的所有子文件夹
$folders = Get-ChildItem -Directory
# 创建一个空数组来存储结果
$results = @()
# 遍历每个文件夹并计算大小
foreach ($folder in $folders) {
$size = (Get-ChildItem $folder.FullName -Recurse -File | Measure-Object -Property Length -Sum).Sum
$results += [PSCustomObject]@{
Name = $folder.Name
Size = $size
SizeGB = [math]::Round($size / 1GB, 2)
}
}
# 按大小降序排序并选择前10个
$topFolders = $results | Sort-Object Size -Descending | Select-Object -First 10
# 显示结果
Write-Host "Top 10 folders by size:`n"
$topFolders | Format-Table -AutoSize -Property Name, @{Name="Size (GB)"; Expression={$_.SizeGB}}
# 询问是否显示所有文件夹的大小
$showAll = Read-Host "Do you want to see the size of all folders? (Y/N)"
if ($showAll -eq "Y" -or $showAll -eq "y") {
Write-Host "`nAll folders:`n"
$results | Sort-Object Size -Descending | Format-Table -AutoSize -Property Name, @{Name="Size (GB)"; Expression={$_.SizeGB}}
}
这个代码的话效率慢一点但是不会出红 是因为他递归了所有文件夹下的子文件
而下面这个会红 因为他用了一个属性 这个属性是只有文件夹所拥有的
# 获取当前文件夹下的所有子文件夹
$folders = Get-ChildItem -Directory
# 创建一个空数组来存储结果
$results = @()
# 遍历每个文件夹并计算大小
foreach ($folder in $folders) {
$size = (Get-ChildItem $folder.FullName -Recurse | Measure-Object -Property Length -Sum).Sum
$results += [PSCustomObject]@{
Name = $folder.Name
Size = $size
SizeGB = [math]::Round($size / 1GB, 2)
}
}
# 按大小降序排序并选择前10个
$topFolders = $results | Sort-Object Size -Descending | Select-Object -First 10
# 显示结果
Write-Host "Top 10 folders by size:`n"
$topFolders | Format-Table -AutoSize -Property Name, @{Name="Size (GB)"; Expression={$_.SizeGB}}
# 询问是否显示所有文件夹的大小
$showAll = Read-Host "Do you want to see the size of all folders? (Y/N)"
if ($showAll -eq "Y" -or $showAll -eq "y") {
Write-Host "`nAll folders:`n"
$results | Sort-Object Size -Descending | Format-Table -AutoSize -Property Name, @{Name="Size (GB)"; Expression={$_.SizeGB}}
}
我们需要把这个代码放在一个.ps1的文件中 然后在powershell里,用类似以下语句执行
.\folder_size.ps1
访问权限不足 通常是c的权限不足 需要先执行
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
1万+

被折叠的 条评论
为什么被折叠?



