You can get a property by name by name using the Select-Object
cmdlet and specify the property name(s) that you're interested in. これは単にそのプロパティの生の値を返すわけではないことに注意してください。代わりに、オブジェクトのように動作するものを取得します。
[PS]> $property = (Get-Process)[0] | Select-Object -Property Name
[PS]> $property
Name
----
armsvc
[PS]> $property.GetType().FullName
System.Management.Automation.PSCustomObject
そのプロパティの値を使用するには、プロパティが 1 つしかない場合でも、目的のプロパティを特定する必要があります。
[PS]> $property.Name
armsvc
[PS]> $property -eq "armsvc"
False
[PS]> $property.Name -eq "armsvc"
True
[PS]> $property.Name.GetType().FullName
System.String
ここでの他の回答によると、文字列内で単一のプロパティを使用する場合は、式を評価し (括弧で囲みます)、プレフィックスとしてドル記号 ($) を付けて、挿入する変数として式を動的に宣言する必要があります。文字列に:
[PS]> "The first process in the list is: $($property.Name)"
The first process in the list is: armsvc
コマンドレットの-ExpandProperty
パラメーターを推奨することで、他の人がこの質問に正しく答えています。Select-Object
これにより、指定されたプロパティの値が返されるため、頭痛の種の一部が回避されますが、さまざまなシナリオでさまざまなアプローチを使用する必要があります。
-ExpandProperty <String>
選択するプロパティを指定し、そのプロパティの展開を試みる必要があることを示します
https://technet.microsoft.com/en-us/library/hh849895.aspx
[PS]> (Get-Process)[0] | Select-Object -ExpandProperty Name
armsvc
パワーシェル 変数