オブジェクトまたはオブジェクトプロパティを選択します。
構文
Select-Object >]
Select-Object >]
説明
Select-Object
コマンドレットは、オブジェクトまたはオブジェク また、一意のオブジェクト、指定された数のオブジェクト、または配列内の指定された位置にあるオブジェクトを選択することもできます。
コレクションからオブジェクトを選択するには、First、Last、Unique、Skip、andIndexパラメーターを使用します。 オブジェクトのプロパティを選択するには、Propertyパラメーターを使用します。 プロパティを選択すると、Select-Object
は、指定されたプロパティのみを持つ新しいオブジェクトを返します。
Windows PowerShell3.0以降では、Select-Object
には、コマンドが使用されていないオブジェクトを作成および処理するのを防ぐ最適化機能が含まれています。
commandpipelineの最初のパラメーターまたはインデックスパラメーターを指定してSelect-Object
Select-Object
コマンドの前にオブ この最適化動作をオフにするには、Waitparameterを使用します。
例
例1:プロパティでオブジェクトを選択
この例では、processオブジェクトのName、ID、およびworking set(WS)プロパティを持つオブジェクトを作成し
Get-Process | Select-Object -Property ProcessName, Id, WS
例2:プロパティでオブジェクトを選択し、結果をフォーマットする
この例では、コンピュータ上のプロセスで使用されるモジュー これは、Get-Process
コマンドレットを使用して、コンピュータ上のプロセスを取得します。
Select-Object
System.Diagnostics.Process
instanceoutputのModulesプロパティに含まれるGet-Process
。
Select-Object
ProcessName
NotePropertyが追加されますインスタンスとpopulatesit現在のプロセスのProcessNameプロパティの値。
最後に、Format-List
コマンドレットは、リスト内の各プロセスの名前とモジュールを表示するために使用されます。
例3:最も多くのメモリを使用しているプロセスを選択
この例では、最も多くのメモリを使用している五つのプロセスを取得します。 Get-Process
Sort-Object
Select-Object
コマンドレットは、オブジェクトの
Waitパラメーターは、Sort-Object
Sort-Object
Select-Object
最適化は、オブジェクトが処理されるときにオブジェクトを個別に返すコマンドでのみ使用できます。
例4: 配列から一意の文字を選択
この例では、Select-Object
の一意のパラメータを使用して、arrayof文字から一意の文字を取得します。
"a","b","c","a","a","a" | Select-Object -Uniqueabc
例5:イベントログで最新および最古のイベントを選択
この例では、Windows PowerShellイベントログで最初(最新)および最後(最古)のイベン
Get-EventLog
Windows PowerShellログ内のすべてのイベントを取得し、それらを$a
$a
Select-Object
Select-Object
コマンドは、Indexparameterを使用して、$a
変数内のイベントの配列からイベントを選択します。 Firsteventのインデックスは0です。 最後のイベントのインデックスは、$a
の項目数から1を引いたものです。
$a = Get-EventLog -LogName "Windows PowerShell"$a | Select-Object -Index 0, ($A.count - 1)
例6:最初のオブジェクト以外のすべてを選択
この例では、サーバーにリストされている各コンピュータに新しいPSSessionを作成します。最初のものを除いて、txtファイル。
Select-Object
コンピュータ名のリスト内の最初のコンピュータ以外のすべてを選択します。 結果のlistof computersは、New-PSSession
コマンドレットのComputerNameパラメーターの値として設定されます。
New-PSSession -ComputerName (Get-Content Servers.txt | Select-Object -Skip 1)
例7:ファイルの名前を変更し、レビューするためにいくつかを選択
この例では、読み取り専用属性を持つテキストファイルのベース名に”-ro”サフィックスを追加し、最初の五つのファイルを表示して、ユーザーが効果のサンプルを見ることができるようにします。
Get-ChildItem
読み取り専用ファイルを取得するには、ReadOnly動的パラメータを使用します。 結果のファイルはRename-Item
Rename-Item
のPassthruパラメーターを使用して、名前を変更したファイルをSelect-Object
コマンドレットに送信し、最初の5つのfordisplayを選択します。
Select-Object
のWaitパラメーターは、PowerShellがGet-ChildItem
コマンドレットを停止しないようにします。 このパラメーターを指定しないと、firstfive読み取り専用ファイルのみの名前が変更されます。p>
Get-ChildItem *.txt -ReadOnly | Rename-Item -NewName {$_.BaseName + "-ro.txt"} -PassThru | Select-Object -First 5 -Wait
例8: -ExpandPropertyパラメーターの複雑さを示す
この例では、ExpandPropertyパラメーターの複雑さを示します。生成された出力は、インスタンスの配列であったことに注意してください。 インスタンスは、出力ビューの標準書式設定ルールに準拠しています。 これは、展開されたプロパティに当てはまります。 出力されたオブジェクトが特定の標準形式を持っている場合、展開されたプロパティは表示されない可能性があります。p>
# Create a custom object to use for the Select-Object example.$object = @{Name="CustomObject";Expand=@(1,2,3,4,5)}# Use the ExpandProperty parameter to Expand the property.$object | Select-Object -ExpandProperty Expand -Property Name12345# The output did not contain the Name property, but it was added successfully.# Use Get-Member to confirm the Name property was added and populated.$object | Select-Object -ExpandProperty Expand -Property Name | Get-MemberTypeName: System.Int32Name MemberType Definition---- ---------- ----------CompareTo Method int CompareTo(System.Object value), int CompareTo(int value), int IComparable.CompareTo(System.Object obj)...Equals Method bool Equals(System.Object obj), bool Equals(int obj), bool IEquatable.Equals(int other)GetHashCode Method int GetHashCode()GetType Method type GetType()GetTypeCode Method System.TypeCode GetTypeCode(), System.TypeCode IConvertible.GetTypeCode()ToBoolean Method bool IConvertible.ToBoolean(System.IFormatProvider provider)ToByte Method byte IConvertible.ToByte(System.IFormatProvider provider)ToChar Method char IConvertible.ToChar(System.IFormatProvider provider)ToDateTime Method datetime IConvertible.ToDateTime(System.IFormatProvider provider)ToDecimal Method decimal IConvertible.ToDecimal(System.IFormatProvider provider)ToDouble Method double IConvertible.ToDouble(System.IFormatProvider provider)ToInt16 Method int16 IConvertible.ToInt16(System.IFormatProvider provider)ToInt32 Method int IConvertible.ToInt32(System.IFormatProvider provider)ToInt64 Method long IConvertible.ToInt64(System.IFormatProvider provider)ToSByte Method sbyte IConvertible.ToSByte(System.IFormatProvider provider)ToSingle Method float IConvertible.ToSingle(System.IFormatProvider provider)ToString Method string ToString(), string ToString(string format), string ToString(System.IFormatProvider provider)...ToType Method System.Object IConvertible.ToType(type conversionType, System.IFormatProvider provider)ToUInt16 Method uint16 IConvertible.ToUInt16(System.IFormatProvider provider)ToUInt32 Method uint32 IConvertible.ToUInt32(System.IFormatProvider provider)ToUInt64 Method uint64 IConvertible.ToUInt64(System.IFormatProvider provider)Name NoteProperty string Name=CustomObject
例9: オブジェクトにカスタムプロパティを作成する
次の例では、Select-Object
Select-Object
は、渡された各オブジェクトにそのプロパティをaNotePropertyとして作成します。
例10:各InputObjectの計算されたプロパティを作成する
この例では、Select-Object
を使用して、計算されたプロパティを入力に追加します。 PropertyパラメーターにScriptBlockを渡すと、Select-Object
が渡された式oneachオブジェクトを評価し、結果を出力に追加します。 ScriptBlock内では、$_
Select-Object
はScriptBlock文字列をプロパティの名前として使用します。 AHashtableを使用すると、ScriptBlockの出力にeachobjectに追加されたカスタムプロパティとしてラベルを付けることができます。 Select-Object
に渡された各オブジェクトに複数の計算プロパティを追加できます。
パラメーター
このコマンドレットが操作から除外するプロパティを指定します。 ワイルドカードは許可されます。PowerShell6以降では、機能するためにPropertyパラメータforExcludePropertyを含める必要はなくなりました。
選択するプロパティを指定し、そのプロパティを展開しようとすることを示します。
- 指定されたプロパティが配列の場合、配列の各値が出力に含まれます。
- 指定されたプロパティがオブジェクトの場合、objectsプロパティはeveryInputObjectに対して展開されます
いずれの場合も、オブジェクト出力のタイプは展開
Propertyパラメータが指定されている場合、Select-Object
は、各selectedpropertyをNotePropertyとして出力されるすべてのオブジェクトに追加しようとします。Select:Property cannot be processed because property<PropertyName>
-ExpandProperty
Select-Object
は既存のプロパティを置き換えることはできません。つまり、
- 展開されたオブジェクトに同じ名前のプロパティがある場合、エラーが発生します。
- 選択したオブジェクトが展開されたオブジェクトプロパティと同じ名前のプロパティを持つ場合、anerrorが発生します。
タイプ: 文字列 位置: 名前付き デフォルト値: なし パイプライン入力を受け入れます: False td> ワイルドカード文字を受け入れる: false
入力オブジェクトの配列の先頭から選択するオブジェクトの数を指定します。
インデックス値に基づいて配列からオブジェクトを選択します。 インデックスをカンマ区切りで入力しますリスト。 配列内のインデックスは0で始まり、0は最初の値を表し、(n-1)は最後の値を表します。
Type: | Int32 |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Specifies objects to send to the cmdlet through the pipeline. This parameter enables you to pipeobjects to Select-Object
.
パイプラインを使用する代わりにInputObjectパラメーターにオブジェクトを渡すと、Select-Object
は、値がコレクションであっても、InputObjectを単一のオブジェクトとし コレクションをSelect-Object
に渡すときは、パイプラインを使用することをお勧めします。/td>
Specifies the number of objects to select from the end of an array of input objects.
Type: | Int32 |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Specifies the properties to select. これらのプロパティは、notepropertyメンバーとしてtheoutputオブジェクトに追加されます。 ワイルドカードは許可されます。
Propertyパラメータの値は、新しい計算されたプロパティにすることができます。 計算されたプロパティを作成するには、ハッシュテーブルを使用します。
有効なキーは次のとおりです。
- 名前(またはラベル)-
<string>
- 式-
<string>
<script block>
詳細については、about_calculated_propertiesを参照してください。
指定された数の項目をスキッ 既定では、Skipパラメーターは配列またはオブジェクトのリストの先頭からカウントされますが、コマンドが最後のパラメーターを使用する場合は、リストまたは配列の末尾からカウントされます。
0からカウントを開始するIndexパラメータとは異なり、Skipパラメータは1から始まります。p>
タイプ: | Int32 |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Type: | Int32 |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters:/td> | False |
リストまたは配列の最後から指定された数の項目をスキップします(選択しません)。 最後のパラメータと一緒にSkipを使用するのと同じ方法で動作します。
0からカウントを開始するIndexパラメーターとは異なり、SkipLastパラメーターは1から始まります。
入力オブジェクトのサブセットが同じプロパティと値を持
このパラメータでは大文字と小文字が区別されます。 その結果、文字の大文字と小文字だけが異なる文字列は一意であると考えられています。
:
コマンドレットが最適化をオフにすることを示します。 PowerShellは、コマンドパイプラインに表示される順序でコマンドを実行し、すべてのオブジェクトを生成できます。 既定では、コマンドパイプラインの最初のパラメーターまたはインデックスパラメーターを指定してSelect-Object
コマンドを含めると、PowerShellstopsは、選択した数のオブジ
このパラメーターは、Windows PowerShell3.0で導入されました。
入力
PSObject
任意のオブジェクトをSelect-Object
にパイプできます。
出力
PSObject
ノート
-
Select-Object
select
で参照することもできます。 詳細については、about_aliasesを参照してください。 -
Select-Object
の最適化機能は、処理されるときにパイプラインにオブジェクトを書き込むコマンドでのみ使用できます。 処理されたオブジェクトをバッファし、それらをコレクションとして書き込むコマンドには影響しません。 オブジェクトをすぐに記述することは、コマンドレットの設計のベストプラクティスです。 詳細については、”パイプラインへの単一レコードの書き込み”を参照してください。
- about_calculated_properties
- グループオブジェクト
- ソートオブジェクト
- Where-Object