Я проверяю свои серверы Использование дискового пространства и генерирует текстовый файл в виде отчета. Я хочу сортировать выходной файл в порядке возрастания FreePercentage Free%.Как отсортировать текстовый файл в PowerShell
Я застрял на этом этапе. Он просто не сортирует. Это вопрос разделителя? Где моя ошибка?
# files to be used
$FileName0 = "C:\MONITORING\WINDOWS-SPACE\SCRIPT\SPACE0.txt"
$FileName1 = "C:\MONITORING\WINDOWS-SPACE\SCRIPT\SPACE1.txt"
$FileName2 = "C:\MONITORING\WINDOWS-SPACE\SCRIPT\SPACE2.txt"
# file containing servers list
#$ServerName = Get-Content "C:\MONITORING\WINDOWS-SPACE\SCRIPT\COMPUTERS.txt"
# use 2 servers only for coding test, will be replaced by a file containing all
# servers
$ServerName = "SERVER1","SERVER2"
# loop and process drive-id and calculations and populate filename-0
foreach ($_ in $ServerName) {
Get-WmiObject -Query "Select * from win32_logicaldisk" -ComputerName $_ |
Select PSComputername, DeviceID,
@{Name="TotalGB"; Expression={"{0:N0}" -F ($_.Size/1GB)}},
@{Name="UsedGB" ; Expression={"{0:N0}" -F (($_.Size/1GB)-($_.Freespace/1GB))}},
@{Name="FreeGB" ; Expression={"{0:N0}" -F ($_.Freespace/1GB)}},
@{Name="Free%" ; Expression={"{0:N0}" -F (($_.Freespace/$_.Size)*100)}} |
Format-Table -AutoSize >> $FileName0
}
# remove unwanted drives ('A'&'Z') and duplicate lines and empty lines and
# populate filename-1
Get-Content $FileName0 | Select-Object -Unique |
Where {$_ -notmatch "A:"} |
Where {$_ -notmatch "Z:"} |
Where { $_ -notmatch "^-" } |
Where {$_ -ne ""} |
Format-Table -AutoSize > $FileName1
# input final result into a CSV file filename-2
Import-Csv $FileName1 -Header PSComputername, TotalGB, UsedGB, FreeGB, Free% |
sort [int]Free% |
Format-Table -AutoSize >> $FileName2
Фактический выходной файл:
PSComputerName DeviceID TotalGB UsedGB FreeGB Free% SERVER1 C: 60 33 27 45 SERVER1 D: 20 2 18 88 SERVER2 C: 40 27 13 33 SERVER2 D: 50 6 44 87
Желаемые выходной файл:
PSComputerName DeviceID TotalGB UsedGB FreeGB Free% SERVER2 C: 40 27 13 33 SERVER1 C: 60 33 27 45 SERVER2 D: 50 6 44 87 SERVER1 D: 20 2 18 88
Что я могу сказать? Это СОВЕРШЕННО !!! Спасибо !!! – user270488
'FreePercent' - это строковые значения, поэтому вам нужно' Sort-Object {[int] $ _. FreePercent} ', чтобы получить результаты в правильном порядке. –
Правильно, я заметил, что после того, как я опубликовал и обновил, чтобы передать все значения в '[Int]'. –