【问题标题】:Powershell | data growth query外壳 |数据增长查询
【发布时间】:2022-08-14 10:46:54
【问题描述】:

我正在尝试编写一个测量数据增长的脚本

我进行查询并编写初始 csv。然后我每周将其与新查询进行一次比较。

这是比较脚本:

$vergleich = compare $initial $list -Property SizeRemaining -IncludeEqual -PassThru | Where-Object {$_.SideIndicator -ne \"==\"}| Select-Object Server,Laufwerksbuchstabe,SizeRemaining,SideIndicator,Datum | Sort-Object -Property Server -Descending
$vergleich | Export-Csv -Delimiter \';\' -Append  -Path C:\\Administrativ\\Festplattenanalyse.csv -NoTypeInformation 

这是输出:

现在我的问题是:我该怎么做?与硬盘 C 与 TS-1 的区别在新列中还是最好创建一个新的 csv,其中列出每个硬盘的数据增长情况?

任何想法?

    标签: powershell csv automation diskspace hard-drive


    【解决方案1】:

    就我个人而言,我真的不喜欢在使用 PowerShell 时使用 for 循环,但是目前我想不出更好的方法来解决这个问题。

    以下代码执行以下操作:

    • 使用Sort-Object Date按日期对对象进行排序,以便对象按时间顺序排列
    • 使用Group-Object按服务器和盘符对数据进行分组
    • 使用 for 循环遍历每个组 ($_.Group),以便访问前一个对象进行比较
    • 在循环内部:
      • 如果 $i = 0,则添加没有值的“Diff”属性 (-)
      • 剩下的,获取当前对象和前一个对象的大小差异
    # BEGIN TEST DATA
    $data = @'
    Server,Size,Date,Drive
    TS-2,1400,02.01.2022,C
    TS-1,400,05.02.2022,C
    TS-1,2400,05.03.2022,C
    TS-2,700,13.02.2022,C
    TS-1,100,2022-jan-22 00:00:00,C
    '@ | ConvertFrom-Csv | Select-Object *, @{n = 'Date'; e = { $_.date -as [datetime] } } -ExcludeProperty Date
    # END TEST DATA
    
    $data | Sort-Object Date | 
        Group-Object -Property Server, Drive | 
            ForEach-Object {
                for ($i = 0; $i -lt $_.Group.Count; $i++) {
                    $currentItem = $_.Group[$i]
                    if ($i -eq 0) {
                        $currentItem | Add-Member -NotePropertyName 'Diff' -NotePropertyValue '-' -PassThru
                    }
                    else {
                        $previousItem = $_.Group[$i - 1]
                        $diff = $currentItem.Size - $previousItem.Size
                        $currentItem | Add-Member -NotePropertyName 'Diff' -NotePropertyValue $diff -PassThru
                    }
                }
            } | Format-Table
    
    

    输出

    Server Size Drive Date                Diff
    ------ ---- ----- ----                ----
    TS-1   100  C     22.01.2022 00:00:00 -
    TS-1   400  C     05.02.2022 00:00:00 300
    TS-1   2400 C     05.03.2022 00:00:00 2000
    TS-2   1400 C     02.01.2022 00:00:00 -
    TS-2   700  C     13.02.2022 00:00:00 -700
    

    【讨论】:

      猜你喜欢
      • 2012-08-20
      • 2021-08-17
      • 1970-01-01
      • 2011-06-27
      • 2016-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-11
      相关资源
      最近更新 更多