Wie erhalten Sie in PowerShell den Eigenschaftswert eines Objekts, indem Sie dessen Namen (eine Zeichenfolge) angeben? Ich möchte so etwas wie das Folgende:
$obj = get-something
# View the object's members:
$obj | gm
# I could retrieve a property by doing so:
write-host $obj.SomeProp
# But for many purposes, I would really want to:
write-host $obj | Get-PropertyByName "SomeProp"
Gibt es etwas Ähnliches wie "Get-PropertyByName" in PowerShell?
powershell
KFL
quelle
quelle
select -expand "SomeProp"
Sie daran, zu erweitern: wenn Sie den Wert wollen.select "SomeProp"
gibt ein benutzerdefiniertes Objekt mit der Eigenschaft "SomeProp" zurück, und dann ist er so ziemlich zurück in Schritt 1.$obj."SomeProp"
inwrite-host
?$obj.($propName)
funktioniert dies ebenfalls. (Die Klammern sind nicht erforderlich, aber es sieht für mich ohne sie wirklich komisch aus.)$propName
in einem Objekt gespeichert haben,$Headers.PropertyName
sind die Klammern erforderlich$obj.($Headers.PropertyName)
.@Aquinas erweitern:
oder
oder
Ich habe diese Vorschläge für diejenigen gemacht, die möglicherweise nur nach einem einzeiligen Befehl suchen, um Informationen zu erhalten, und wollte ein Beispiel aus der Praxis aufnehmen.
Bei der Verwaltung von Office 365 über PowerShell habe ich anhand eines Beispiels alle Benutzer / Gruppen abgerufen, die der Liste "BookInPolicy" hinzugefügt wurden:
Allein die Verwendung von "Select BookInPolicy" hat mehrere Mitglieder abgeschnitten. Vielen Dank für diese Informationen!
quelle
Sie können eine Eigenschaft anhand des Namens mithilfe des
Select-Object
Cmdlets abrufen und die Eigenschaftsnamen angeben, an denen Sie interessiert sind. Beachten Sie, dass dies nicht einfach den Rohwert für diese Eigenschaft zurückgibt. Stattdessen erhalten Sie etwas, das sich immer noch wie ein Objekt verhält.Um den Wert für diese Eigenschaft verwenden zu können, müssen Sie weiterhin angeben, nach welcher Eigenschaft Sie suchen, auch wenn nur eine Eigenschaft vorhanden ist:
Wie bei anderen Antworten hier, müssen Sie, wenn Sie eine einzelne Eigenschaft innerhalb einer Zeichenfolge verwenden möchten, den Ausdruck auswerten (umklammern) und ein Dollarzeichen ($) voranstellen, um den Ausdruck dynamisch als einzufügende Variable zu deklarieren in die Zeichenfolge:
Ganz richtig, andere haben diese Frage beantwortet, indem sie den
-ExpandProperty
Parameter für dasSelect-Object
Cmdlet empfohlen haben. Dadurch wird ein Teil der Kopfschmerzen umgangen, indem der Wert der angegebenen Eigenschaft zurückgegeben wird. Sie sollten jedoch in verschiedenen Szenarien unterschiedliche Ansätze verwenden.Power Shell Variablen
quelle
Versuche dies :
quelle
Hier ist eine alternative Möglichkeit, den Eigenschaftswert eines Objekts abzurufen:
quelle
quelle