Da gibt es nicht viele Informationen darüber, was $Customer
ist und was Sie verwenden möchten, werde ich raten, dass $Customer
ist ein einzelnes Objekt und kein Array. Um die Eigenschaften zu durchlaufen, die mit Cust.
beginnen und gleichzeitig sowohl auf den Eigenschaftsnamen als auch auf den Eigenschaftswert zugreifen können, würde ich dies verwenden. Passen Sie es an Ihre Bedürfnisse:
$Customer = [pscustomobject]@{ Name = "Object1"; "Cust.ID" = 1; "Cust.Car" = "Mercedes"}
$Customer.psobject.Properties | Where-Object { $_.Name -like 'Cust.*' } | ForEach-Object {
#Foreach property with a Cust. prefix
$PropertyName = $_.Name
$PropertyValue = $_.Value
Write-Host "$PropertyName = '$PropertyValue'"
}
Ausgang:
Cust.ID = '1'
Cust.Car = 'Mercedes'
Wenn Sie ein Array ausgeben und Sie bekommen nur ein paar Eigenschaften (die in dem ersten Objekt) wie:
$Customer = @()
$Customer += [pscustomobject]@{ Name = "Object1"; "Cust.ID" = 1; "Cust.Car" = "Mercedes"}
$Customer += [pscustomobject]@{ Name = "Object2"; "Cust.ID" = 2; "Cust.Moped" = "Vespa"}
$Customer | Select-Object -Property "Cust.*"
Cust.ID Cust.Car
------- --------
1 Mercedes
2
Dann möchten Sie eine vollständige Liste der cust.*
-Eigenschaften erstellen und diese in Ihrer Select-Object
-Anweisung verwenden:
$AllCustProperties = $Customer | ForEach-Object { $_.psobject.Properties } | Where-Object { $_.Name -like 'Cust.*' } | Select-Object -ExpandProperty Name -Unique
$Customer | Select-Object -Property $AllCustProperties
Cust.ID Cust.Car Cust.Moped
------- -------- ----------
1 Mercedes
2 Vespa
Was macht der von Ihnen eingegebene Code? Produziert es die richtigen Eigenschaften und Werte? –
Sie müssen zeigen, wie die Objekte in '$ Customer' erstellt werden und wie Sie die Ausgabe verwenden. Die Proben müssen einfach und reproduzierbar sein und das gewünschte Ergebnis sollte klar sein. –
@MikeShepard $ Kunde zeigt korrekt Cust.Option1 = "Ja", Cust.Option2 = "Nein" usw. Ich weiß nur nicht, wie viele Optionen es gibt oder ihre Werte bis zur Laufzeit. – westerdaled