2017-02-21 6 views
1

Ich versuche, einen Wert aus einer Tabelle (aus einer CSV-Datei importiert) zu erhalten. Ich kann es mit 2 Zeilen tun, aber ich denke, ich vermisse etwas und es könnte wahrscheinlich in nur einer Zeile getan werden. HierAbrufen eines Werts in einem tabellarischen benutzerdefinierten Objekt

ist der Code:

$bar = $foo | where-Object {$_.Myvalue -eq "network" } 
$bar.label 

Diese tatsächlich funktioniert. Aber ich denke, ich kann das in einer einzigen Zeile machen, aber ich habe herausgefunden, wie.

+1

PS3 +: '$ foo | ? Myvalue -eq "Netzwerk" | wähle -expand label' – wOxxOm

+1

oder '($ foo | Where-Objekt {$ _. Myvalue -eq" Netzwerk "}). label' –

Antwort

2

Sie können das Select-Object Cmdlets den Wert abzurufen:

$foo | where-Object {$_.Myvalue -eq "network" } | Select-Object -expand label 
4

Versuchen Select-Object -ExpandProperty:

$foo | where-Object {$_.Myvalue -eq "network" } | Select-Object -ExpandProperty Label 

Oder Foreach-Object:

$foo | where-Object {$_.Myvalue -eq "network" } | Foreach-Object { $_.Label } 
+1

Genau aus diesem Grund braucht er es. '$ foo' ist ein Objekt mit einer Label-Eigenschaft, von der er den Wert möchte. Ohne erweitern würde er ein neues Objekt mit nur dieser Eigenschaft erhalten. Mit erweitern wird er den tatsächlichen Wert von "Label" bekommen –

+0

ok meine Entschuldigung :) +1 4 U – Esperento57

1

($foo | Where-Object -FilterScript { $_.MyValue -eq "network" }).label sollte funktionieren, wenn Sie nicht wollen, um die Struktur zu behalten.

0

Beispiel für Lösungen. Einige wurden bereits vorgeschlagen.

$foo=import-csv "C:\temp\gogo.csv" 

#possibility 0, with ultra short version of where and select 
$foo | ? Myvalue -eq "network" | Select label 

#possibility 1, with short version of where and select 
$foo | Where Myvalue -eq "network" | Select label 

#possibility 2, with property on list result 
($foo | Where Myvalue -eq "network").label 

#possibility 3, with where property 
$foo.Where({$_.Myvalue -eq "network"}).label 

#possibility 4, with if into foreach 
$foo | %{ if ($_.Myvalue -eq "network") {$_.label}} 

#possibility 5, with format table 
$foo | Where Myvalue -eq "network" | Format-Table label 
Verwandte Themen