You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取用户电脑所有PST文件并统计单文件及总大小

问题描述

我需要从电脑里找出所有.pst文件,想实现两个功能:一是显示每个文件的路径和对应的大小,二是算出所有这些文件的总大小。

现在用的PowerShell脚本只能统计文件数量,单独指定一个PST文件路径能正确拿到它的大小,但不知道怎么把结果存进变量来统计总大小,也不确定是不是必须逐个输出文件路径和大小才行。

现有脚本

Get-ChildItem -Path C:\users -Filter "*.pst" -Recurse | Select-Object -ExpandProperty Fullname

For($i=0; $i -lt $path.Measure; $i++){
[pscustomobject] @{
    PSTsFound = $path[$i]
    }
    (Get-Item -Path $path).Length/1MB
}

单个文件获取大小的有效命令

(Get-Item -Path 'C:\users\user\Documents\Outlook Files\file@file.com.pst').Length/1MB 

解决方案

1. 先把所有PST文件存到变量里

先一次性找出所有PST文件,把它们的完整对象(包含路径、大小等属性)存到变量里,这样后续操作不用反复扫描文件系统,效率更高:

$pstFiles = Get-ChildItem -Path C:\users -Filter "*.pst" -Recurse -File

2. 逐个输出文件路径和大小

直接遍历刚才存的变量,输出每个文件的路径和大小(单位转成MB,保留两位小数更直观):

$pstFiles | ForEach-Object {
    [pscustomobject]@{
        文件路径 = $_.FullName
        大小(MB) = [math]::Round($_.Length / 1MB, 2)
    }
}

3. 统计总大小

利用变量里的文件对象,直接计算总大小:

$总大小MB = [math]::Round(($pstFiles | Measure-Object -Property Length -Sum).Sum / 1MB, 2)
Write-Host "所有PST文件总大小:$总大小MB MB"

整合版脚本(一步搞定所有操作)

如果想一次性完成列表展示和总大小统计,用这个脚本就行:

# 获取所有PST文件对象
$pstFiles = Get-ChildItem -Path C:\users -Filter "*.pst" -Recurse -File

# 显示找到的PST文件列表
Write-Host "=== 找到的PST文件 ==="
$pstFiles | ForEach-Object {
    [pscustomobject]@{
        文件路径 = $_.FullName
        大小(MB) = [math]::Round($_.Length / 1MB, 2)
    }
} | Format-Table -AutoSize

# 显示总大小统计
$总大小MB = [math]::Round(($pstFiles | Measure-Object -Property Length -Sum).Sum / 1MB, 2)
Write-Host "`n=== 总大小统计 ==="
Write-Host "所有PST文件总大小:$总大小MB MB"

内容的提问来源于stack exchange,提问作者rpardue91

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 21:50:38