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

如何用PowerShell计算磁盘数据增长量并生成CSV报表?

解决PowerShell磁盘数据增长计算问题

方法一:在现有对比结果中新增「数据增长量」列

Compare-Object的SideIndicator字段里,<=代表初始数据集($initial),=>代表最新查询数据集($list)。数据增长量的逻辑是:初始剩余空间 - 最新剩余空间(剩余空间减少的数值就是磁盘新增的数据量)。

先把初始和最新数据转为哈希表,方便快速匹配同服务器同盘符的对应值,再计算增长量:

# 将初始数据转为哈希表,键为「Server-盘符」,值为数值型剩余空间
$initialHash = @{}
foreach ($item in $initial) {
    $key = "$($item.Server)-$($item.Laufwerksbuchstabe)"
    $initialHash[$key] = [Int64]$item.SizeRemaining
}

# 将最新数据转为哈希表
$listHash = @{}
foreach ($item in $list) {
    $key = "$($item.Server)-$($item.Laufwerksbuchstabe)"
    $listHash[$key] = [Int64]$item.SizeRemaining
}

# 执行对比并新增增长量列
$vergleich = Compare-Object $initial $list -Property SizeRemaining -IncludeEqual -PassThru | 
    Where-Object {$_.SideIndicator -ne "=="} |
    Select-Object Server, Laufwerksbuchstabe, SizeRemaining, SideIndicator, Datum,
        @{Name='Datenwachstum'; Expression={
            $key = "$($_.Server)-$($_.Laufwerksbuchstabe)"
            if ($_.SideIndicator -eq '=>') {
                # 最新数据行:用初始剩余空间减去当前剩余空间得到增长量
                $initialHash[$key] - [Int64]$_.SizeRemaining
            } else {
                # 初始数据行(仅当最新数据中无此磁盘时出现)
                [Int64]$_.SizeRemaining - $listHash[$key]
            }
        }} |
    Sort-Object -Property Server -Descending

# 导出带增长量的CSV
$vergleich | Export-Csv -Delimiter ';' -Append -Path C:\Administrativ\Festplattenanalyse.csv -NoTypeInformation

方法二:生成仅展示磁盘增长量的独立CSV

如果只需要每个磁盘的增长量统计,不需要对比的原始字段,可以直接匹配初始和最新数据,计算后导出:

# 转换初始数据为哈希表
$initialHash = @{}
foreach ($item in $initial) {
    $key = "$($item.Server)-$($item.Laufwerksbuchstabe)"
    $initialHash[$key] = [Int64]$item.SizeRemaining
}

# 遍历最新数据,匹配初始数据计算增长量
$wachstumListe = foreach ($item in $list) {
    $key = "$($item.Server)-$($item.Laufwerksbuchstabe)"
    if ($initialHash.ContainsKey($key)) {
        [PSCustomObject]@{
            Server = $item.Server
            Laufwerksbuchstabe = $item.Laufwerksbuchstabe
            InitialerFreierSpeicher = $initialHash[$key]
            AktuellerFreierSpeicher = [Int64]$item.SizeRemaining
            Datenwachstum = $initialHash[$key] - [Int64]$item.SizeRemaining
            Datum = $item.Datum
        }
    }
}

# 导出仅含增长量的CSV
$wachstumListe | Export-Csv -Delimiter ';' -Path C:\Administrativ\FestplattenWachstum.csv -NoTypeInformation

注意事项

  • 用Import-Csv读取的SizeRemaining默认是字符串类型,所以代码中手动转为[Int64]确保数值计算正常。
  • 如果某个磁盘仅存在于初始数据或最新数据中,方法二会自动忽略该条目,可根据需求添加逻辑标记为「新增磁盘」或「已移除磁盘」。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 05:57:17