【发布时间】:2010-04-30 17:38:31
【问题描述】:
让我解释一下我的问题。我有一份关于一台 PC 可用空间的每日报告,如文本文件 (sp.txt) 所示:
DateTime FreeSpace(MB)
----- -------------
03/01/2010 100.43
DateTime FreeSpace(MB)
----- -------------
03/02/2010 98.31
....
然后我需要使用这个文件作为输入来生成日期之间可用空间差异的报告:
DateTime FreeSpace(MB) Change
----- ------------- ------
03/01/2010 100.43
03/02/2010 98.31 2.12
....
这里有一些代码我必须在没有额外的“更改”计算的情况下得到以上结果:
Get-Content "C:\report\sp.txt" `
| where {$_.trim().length -gt 0 -and -not ($_ -like "Date*") -and -not ($_ -like "---*")} `
| Select-Object @{Name='DateTime'; expression={[DateTime]::Parse($_.SubString(0, 10).Trim())}}, `
@{Name='FreeSpace(MB)'; expression={$_.SubString(12, 12).Trim()}}, `
| Sort-Object DateTime `
| Select-Object DateTime, 'FreeSpace(MB)' |ft -AutoSize # how to add additional column Change to this Select-Object?
我的理解是 Select-Object 会返回一个对象的集合。在这里,我从输入文本文件创建此集合(将每一行解析为部分:日期时间和空闲空间(MB))。
为了计算日期之间的差异,我想我需要在最后一个 Select-Object 的结果中添加额外的计算值,或者将结果通过管道传递给另一个 Select-Object,并将计算作为附加属性或列。为了做到这一点,我需要获取前一行的 FreeSpace 值。不确定是否可行以及如何实现?
【问题讨论】:
标签: powershell