Ich überprüfe meine Server Speicherplatznutzung und generieren Sie eine Textdatei als Bericht. Ich möchte die Ausgabedatei in aufsteigender Reihenfolge von FreePercentage Free% sortieren.So sortieren Sie eine Textdatei in PowerShell
Ich bin in dieser Phase fest. Es sortiert einfach nicht. Ist es ein Delimiter-Problem? Wo ist mein Fehler?
# 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
tatsächliche Ausgabedatei:
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
Wunschausgabedatei:
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
Was kann ich sagen? Das ist Perfektion !!! Vielen Dank !!! – user270488
'FreePercent' sind String-Werte, Sie benötigen also' Sort-Object {[int] $ _. FreePercent} ', um die Ergebnisse in der richtigen Reihenfolge zu erhalten. –
Korrekt, ich habe festgestellt, dass ich nach der Veröffentlichung und Aktualisierung alle Werte in '[Int]' umgewandelt habe. –