組み込みメンバーについて

簡単な説明

すべての PowerShell オブジェクトで使用できる PowerShell の固有のメンバーについて説明します。

詳しい説明

オブジェクトが作成されると、PowerShell によって、各オブジェクトに "hidden" プロパティとメソッドが追加されます。 これらのプロパティとメソッドは、 組み込みメンバー と呼ばれます。 通常、これらの組み込みメンバーはビューで非表示になります。 これらのメンバーの一部は、 Get-Member -Force コマンドを使用して表示できます。

オブジェクトビュー

組み込みメンバーには、オブジェクトのビューを表す メンバ セットプロパティのセットが含まれています。 任意の PowerShell オブジェクトに対してコマンドを使用して Get-Member -Forceメンバーセット のプロパティを見つけることができます。 すべての PowerShell オブジェクトには、次の メンバーメンバー プロパティが含まれています。

psbase

この psbase には、拡張機能も適合もない基本オブジェクトのメンバーが含まれています。

psadapted

Psadapted ビューには、ベースオブジェクトと適合したメンバー (存在する場合) が表示されます。 適合したメンバーは、拡張型システムによって追加されます。

psextended

Psextended ビューには、 Types.ps1xmlファイルと メンバーの追加コマンドレットによって追加されたメンバー のみ が表示されます。 すべてのオブジェクトは、 Add-Member コマンドレットを使用して実行時に拡張できます。

psobject

すべての PowerShell オブジェクトの基本データ型は [PSObject] です。 ただし、オブジェクトが作成されると、PowerShell はインスタンスを使用して [PSObject] オブジェクトをラップします。 Psobject メンバーは、ラッパーインスタンスへの [PSObject] アクセスを許可します。 ラッパーには、オブジェクトに関するメソッド、プロパティ、およびその他の情報が含まれています。 Psobject メンバーの使用は、 Get メンバーを使用した場合と同じですが、ラッパーインスタンスにアクセスするだけなので、いくつかの違いがあります。

型情報

pstypenames

PSTypeNames は、継承の順序でオブジェクトの種類の階層を一覧表示する codeproperty メンバーです。 次に例を示します。

$file = Get-Item C:\temp\test.txt
$file.pstypenames
System.IO.FileInfo
System.IO.FileSystemInfo
System.MarshalByRefObject
System.Object

上の図に示すように、最も具体的なオブジェクトの種類 System.IO.FileInfo であるを開始し、最も一般的な型で System.Object あるに進みます。

メソッド

PowerShell は、すべての PowerShell オブジェクトに2つの非表示メソッドを追加します。 これらのメソッドは、 Get-Member -Force コマンドまたはタブ補完を使用して表示することはできません。

ForEach () と Where ()

および Where() メソッドは、すべての ForEach() PowerShell オブジェクトで使用できます。 ただし、コレクションを使用する場合に最も役立ちます。 これらの方法の使用方法の詳細については、「 about_Arrays」を参照してください。

プロパティ

カウントと長さ

カウント長さ のプロパティは、すべての PowerShell オブジェクトで使用できます。 これらは互いに似ていますが、データ型によって動作が異なる場合があります。 これらのプロパティの詳細については、「 about_Properties」を参照してください。

配列のインデックス作成スカラー型

オブジェクトがインデックス付きコレクションでない場合、index 演算子を使用して最初の要素にアクセスすると、オブジェクト自体が返されます。 最初の要素を超えるインデックス値はを返し $null ます。

PS> (2)[0]
2
PS> (2)[-1]
2
PS> (2)[1] -eq $null
True
PS> (2)[0,0] -eq $null
True

詳細については、「 about_Operators」を参照してください。

型の New () メソッド

Powershell 5.0 以降では、PowerShell は、すべての .NET 型に対して静的 New() メソッドを追加します。 次の例では、同じ結果が生成されます。

$expression = New-Object -TypeName regex -ArgumentList 'pattern'
$expression = [regex]::new('pattern')

メソッドを使用すると、 new() を使用する New-Object 場合よりもパフォーマンスが向上します。

詳細については、「about_Remote」を参照してください。