オブジェクト$ objectsの配列があるとしましょう。これらのオブジェクトに「名前」プロパティがあるとします。
これは私がやりたいことです
$results = @()
$objects | %{ $results += $_.Name }
これは機能しますが、より良い方法で実行できますか?
私が次のようなことをした場合:
$results = objects | select Name
$results
は、Nameプロパティを持つオブジェクトの配列です。 $ resultsに名前の配列が含まれるようにします。
もっと良い方法はありますか?
Select-Object
のExpandProperty
パラメーターを使用できる可能性があると思います。
たとえば、現在のディレクトリのリストを取得し、単にNameプロパティを表示するには、次のようにします。
ls | select -Property Name
これは、まだDirectoryInfoまたはFileInfoオブジェクトを返しています。 Get-Member (別名gm
)にパイプすることで、パイプラインを介して入力される型をいつでも検査できます。
ls | select -Property Name | gm
したがって、expandオブジェクトを、探しているプロパティのタイプのオブジェクトにするために、次のことができます。
ls | select -ExpandProperty Name
あなたの場合、変数を文字列の配列にするために以下を行うことができます。文字列はNameプロパティです:
$objects = ls | select -ExpandProperty Name
さらに簡単な解決策として、次のものを使用できます。
$results = $objects.Name
$results
の要素のすべての「Name」プロパティ値の配列で$objects
を埋める必要があります。