2017-03-21 3 views
0

Guten Tag,Bestellen Spalten in der Tabelle - Powershell

Ich habe das folgende Skript eine Tabelle als Teil eines HTML-Bericht zu generieren, die ich habe:

(import-csv "C:\AutoTasks\server.txt" | 
% {new-object psobject -property @{ 
"Asset Number"=$_.Computer; 
"Region"=$_.Description; 
"Online Status"=(test-connection -computername $_.Computer -quiet -count 1); 
"Online Since"= Try {(([Management.ManagementDateTimeConverter]::ToDateTime((gwmi Win32_OperatingSystem -ComputerName $_.Computer -ErrorAction Stop).LastBootUpTime)))} Catch {"Offline"} ; 
"Service"=((Get-Service -ComputerName $_.Computer | Where-Object {$_.DisplayName -eq "ServiceName"}).Status); 
"Disk Size (GB)" = ([Math]::Round(((get-WmiObject win32_logicaldisk -Computername $_.Computer -Filter $_.Drive).size)/1Gb,2)); 
"Free Disk Space (GB)" = ([Math]::Round(((get-WmiObject win32_logicaldisk -Computername $_.Computer -Filter $_.Drive).freespace)/1Gb,2)); 
"Free Disk Space %" = ([Math]::Round(100*(([Math]::Round(((get-WmiObject win32_logicaldisk -Computername $_.Computer -Filter $_.Drive).freespace)/1Gb,2))/([Math]::Round(((get-WmiObject win32_logicaldisk -Computername $_.Computer -Filter $_.Drive).size)/1Gb,2))),2)) 
}} | ConvertTo-HTML -as Table -Fragment -PreContent "<h2>Backup Machines</h2>" | Out-String) 

Es tut alles was ich brauche.

Mein Problem ist jedoch mit der Reihenfolge der Spalten. Es wird nicht in der von mir angegebenen Spaltenreihenfolge angezeigt, und es gibt scheinbar keine Logik für die Reihenfolge, die es anbietet.

Irgendwelche Ideen, wie ich die Reihenfolge angeben kann, fehlt mir irgendwo eine format-table Aussage? Meine Suchen werden leer angezeigt.

+0

Welche Version von Powershell verwenden Sie? ('$ PSVersionTable.PSVersion') –

+0

Es ist Version 3.0 – PJC83

Antwort

1

In Powershell 3.0 und höher, können Sie das [ordered] Attribut auf einer Hash-Tabelle wörtlichen verwenden, um anzuzeigen, dass Sie ein geordnetes Wörterbuch stattdessen wollen:

(import-csv "C:\AutoTasks\server.txt" | 
% {new-object psobject -property $([ordered]@{ 
"Asset Number"=$_.Computer; 
"Region"=$_.Description; 
"Online Status"=(test-connection -computername $_.Computer -quiet -count 1); 
"Online Since"= Try {(([Management.ManagementDateTimeConverter]::ToDateTime((gwmi Win32_OperatingSystem -ComputerName $_.Computer -ErrorAction Stop).LastBootUpTime)))} Catch {"Offline"} ; 
"Service"=((Get-Service -ComputerName $_.Computer | Where-Object {$_.DisplayName -eq "ServiceName"}).Status); 
"Disk Size (GB)" = ([Math]::Round(((get-WmiObject win32_logicaldisk -Computername $_.Computer -Filter $_.Drive).size)/1Gb,2)); 
"Free Disk Space (GB)" = ([Math]::Round(((get-WmiObject win32_logicaldisk -Computername $_.Computer -Filter $_.Drive).freespace)/1Gb,2)); 
"Free Disk Space %" = ([Math]::Round(100*(([Math]::Round(((get-WmiObject win32_logicaldisk -Computername $_.Computer -Filter $_.Drive).freespace)/1Gb,2))/([Math]::Round(((get-WmiObject win32_logicaldisk -Computername $_.Computer -Filter $_.Drive).size)/1Gb,2))),2)) 
})} | ConvertTo-HTML -as Table -Fragment -PreContent "<h2>Backup Machines</h2>" | Out-String) 
+0

Das funktioniert perfekt, danke für die Informationen. – PJC83

Verwandte Themen