Позвольте мне объяснить мой вопрос. У меня есть ежедневный отчет о свободном месте на одном компьютере, как в текстовом файле (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 будет возвращать коллекцию объектов. Здесь я создаю эту коллекцию из входного текстового файла (разбираю каждую строку на части: datetime и freespace (MB)).
Чтобы рассчитать разницу между датами, я предполагаю, что мне нужно добавить дополнительное вычисленное значение к результату последнего объекта Select-Object или передать результат в другой объект Select-Object с вычислением как дополнительное свойство или столбец. Для этого мне нужно получить значение FreeSpace для предыдущей строки. Не уверен, возможно ли это и как?