Hashtables sind nicht per Definition sortiert. Wenn Sie Powershell v3.0 oder höher haben, können Sie das [Ordered]
Attribut für die Hash-Tabelle verwenden:
New-Object PSCustomObject -Property ([Ordered] @{
Computername = $_
PowerShellVersion = $result[0]
dotNetVersion = $result[1]
sqlnacli = $result[2]
redistributable = $result[3]
})
In Powershell v3 + Sie können auch einfach die [PSCustomObject]
Beschleuniger:
[PSCustomObject] @{
Computername = $_
PowerShellVersion = $result[0]
dotNetVersion = $result[1]
sqlnacli = $result[2]
redistributable = $result[3]
}
Wenn Sie brauchen Powershell-Version 2 Kompatibilität, dann können Sie
New-Object PSObject -Property @{
Computername = $_
PowerShellVersion = $result[0]
dotNetVersion = $result[1]
sqlnacli = $result[2]
redistributable = $result[3]
} | Select-Object Computername,PowerShellVersion,dotNetVersion,sqlnacli,redistributable
Der Nachteil bei dieser Methode verwenden, wenn Sie Eigenschaften hinzufügen, müssen Sie daran denken t hinzufügen Saum zu Select-Object
.
Eine Alternative Powershell v2 oder älter ist zur Ausgabe von etwas (zB eine leere Zeichenkette) und Select-Object
dann Eigenschaften genau die benutzerdefinierten erstellen verwenden Sie wollen:
$obj = $_
"" | Select-Object `
@{Name = "Computername"; Expression = {$obj}},
@{Name = "PowerShellVersion"; Expression = {$result[0]}
@{Name = "dotNetVersion"; Expression = {$result[1]}
@{Name = "sqlnacli"; Expression = {$result[2]}
@{Name = "redistributable"; Expression = {$result[3]}
Der einzige (kleine) hier Nachteil ist, dass $_
in Select-Object
bezieht sich auf das unmittelbar vorausgehende Objekt, aus dem Eigenschaften ausgewählt werden (daher die $obj = $_
als erste Zeile, um den Wert zu erhalten).
es ist ein Duplikat in der Tat, aber ich denke, die Antwort auf diese Frage von höherer Qualität ist auch der Titel der Frage ist allgemeiner – SimonS