about_Properties
簡単な説明
PowerShell でオブジェクト プロパティを使用する方法について説明します。
長い説明
PowerShell では、オブジェクトと呼ばれる情報の構造化コレクションを使用して、データ ストア内の項目またはコンピューターの状態を表します。 通常は、Microsoft .NET Frameworkの一部であるオブジェクトを操作しますが、PowerShell でカスタム オブジェクトを作成することもできます。
項目とそのオブジェクトの間の関連付けは非常に近いです。 オブジェクトを変更するときは、通常、オブジェクトが表す項目を変更します。 たとえば、PowerShell でファイルを取得しても、実際のファイルは取得されません。 代わりに、ファイルを表す FileInfo オブジェクトを取得します。 FileInfo オブジェクトを変更すると、ファイルも変更されます。
ほとんどのオブジェクトにはプロパティがあります。 プロパティは、オブジェクトに関連付けられているデータです。 オブジェクトの種類によってプロパティが異なります。 たとえば、ファイルを表す FileInfo オブジェクトには IsReadOnly プロパティがあり、ファイルに読み取り専用属性$False
があり、そうでない場合は含まれます$True
。 ファイル システム ディレクトリを表す DirectoryInfo オブジェクトには、親ディレクトリへのパスを含む Parent プロパティがあります。
オブジェクトのプロパティ
オブジェクトのプロパティを取得するには、コマンドレットを Get-Member
使用します。 たとえば、 FileInfo オブジェクトのプロパティを取得するには、コマンドレットを Get-ChildItem
使用してファイルを表す FileInfo オブジェクトを取得します。 次に、パイプライン演算子 (|
) を使用して FileInfo オブジェクトを Get-Member
送信します。 次のコマンドは、ファイルを pwsh.exe
取得して送信 Get-Member
します。 $PSHOME
自動変数には、PowerShell インストール ディレクトリのパスが含まれています。
Get-ChildItem $PSHOME\pwsh.exe | Get-Member
コマンドの出力には、 FileInfo オブジェクトのメンバーが一覧表示されます。 メンバーには、プロパティとメソッドの両方が含まれます。 PowerShell で作業すると、オブジェクトのすべてのメンバーにアクセスできます。
オブジェクトのプロパティのみを取得し、メソッドを取得するには、次の例に示すように、コマンドレットの Get-Member
MemberType パラメーターを値Property
として使用します。
Get-ChildItem $PSHOME\pwsh.exe | Get-Member -MemberType Property
TypeName: System.IO.FileInfo
Name MemberType Definition
---- ---------- ----------
Attributes Property System.IO.FileAttributes Attributes {get;set;}
CreationTime Property System.DateTime CreationTime {get;set;}
CreationTimeUtc Property System.DateTime CreationTimeUtc {get;set;}
Directory Property System.IO.DirectoryInfo Directory {get;}
DirectoryName Property System.String DirectoryName {get;}
Exists Property System.Boolean Exists {get;}
Extension Property System.String Extension {get;}
FullName Property System.String FullName {get;}
IsReadOnly Property System.Boolean IsReadOnly {get;set;}
LastAccessTime Property System.DateTime LastAccessTime {get;set;}
LastAccessTimeUtc Property System.DateTime LastAccessTimeUtc {get;set;}
LastWriteTime Property System.DateTime LastWriteTime {get;set;}
LastWriteTimeUtc Property System.DateTime LastWriteTimeUtc {get;set;}
Length Property System.Int64 Length {get;}
Name Property System.String Name {get;}
プロパティを見つけたら、PowerShell コマンドでそれらを使用できます。
プロパティ値
特定の型のすべてのオブジェクトに同じプロパティがありますが、それらのプロパティの値は特定のオブジェクトを記述します。 たとえば、すべての FileInfo オブジェクトには CreationTime プロパティがありますが、そのプロパティの値はファイルごとに異なります。
オブジェクトのプロパティの値を取得する最も一般的な方法は、メンバー アクセス演算子 (.
) を使用することです。 オブジェクトを含む変数や、オブジェクトを取得するコマンドなど、オブジェクトへの参照を入力します。 次に、演算子 (.
) の後にプロパティ名を入力します。
たとえば、次のコマンドは、ファイルの CreationTime プロパティの値を pwsh.exe
表示します。 このコマンドはGet-ChildItem
、pwsh.exe file
. コマンドは、プロパティにアクセスする前に実行されることを確認するために、かっこで囲まれています。
(Get-ChildItem $PSHOME\pwsh.exe).CreationTime
Tuesday, June 14, 2022 5:17:14 PM
次の例に示すように、オブジェクトを変数に保存し、メンバー アクセス (.
) メソッドを使用してそのプロパティを取得することもできます。
$a = Get-ChildItem $PSHOME\pwsh.exe
$a.CreationTime
Tuesday, June 14, 2022 5:17:14 PM
また、コマンドレットをSelect-Object
Format-List
使用して、オブジェクトのプロパティ値を表示することもできます。 Select-Object
それぞれが Format-List
Property パラメーターを持っています。 Property パラメーターを使用して、1 つ以上のプロパティとその値を指定できます。 または、ワイルドカード文字 (*
) を使用してすべてのプロパティを表すことができます。
たとえば、次のコマンドは、pwsh.exe ファイルのすべてのプロパティの値を表示します。
Get-ChildItem $PSHOME\pwsh.exe | Format-List -Property *
PSPath : Microsoft.PowerShell.Core\FileSystem::C:\Program Files\PowerShell\7-preview\pwsh.exe
PSParentPath : Microsoft.PowerShell.Core\FileSystem::C:\Program Files\PowerShell\7-preview
PSChildName : pwsh.exe
PSDrive : C
PSProvider : Microsoft.PowerShell.Core\FileSystem
PSIsContainer : False
Mode : -a---
ModeWithoutHardLink : -a---
VersionInfo : File: C:\Program Files\PowerShell\7-preview\pwsh.exe
InternalName: pwsh.dll
OriginalFilename: pwsh.dll
FileVersion: 7.3.0.5
FileDescription: pwsh
Product: PowerShell
ProductVersion: 7.3.0-preview.5 SHA: cfc237ac85cf24fa760923ace568201c8f3256aa
Debug: False
Patched: False
PreRelease: False
PrivateBuild: False
SpecialBuild: False
Language: Language Neutral
BaseName : pwsh
ResolvedTarget : C:\Program Files\PowerShell\7-preview\pwsh.exe
Target :
LinkType :
Length : 285088
DirectoryName : C:\Program Files\PowerShell\7-preview
Directory : C:\Program Files\PowerShell\7-preview
IsReadOnly : False
FullName : C:\Program Files\PowerShell\7-preview\pwsh.exe
Extension : .exe
Name : pwsh.exe
Exists : True
CreationTime : 6/14/2022 5:17:14 PM
CreationTimeUtc : 6/14/2022 10:17:14 PM
LastAccessTime : 7/18/2022 11:32:06 AM
LastAccessTimeUtc : 7/18/2022 4:32:06 PM
LastWriteTime : 6/14/2022 5:17:14 PM
LastWriteTimeUtc : 6/14/2022 10:17:14 PM
LinkTarget :
Attributes : Archive
静的プロパティ
PowerShell では、.NET クラスの静的プロパティを使用できます。 静的プロパティは、オブジェクトのプロパティである標準プロパティとは異なり、クラスのプロパティです。
クラスの静的プロパティを取得するには、コマンドレットの Static パラメーターを Get-Member
使用します。 たとえば、次のコマンドは、クラスの静的プロパティを System.DateTime
取得します。
Get-Date | Get-Member -MemberType Property -Static
TypeName: System.DateTime
Name MemberType Definition
---- ---------- ----------
MaxValue Property static datetime MaxValue {get;}
MinValue Property static datetime MinValue {get;}
Now Property datetime Now {get;}
Today Property datetime Today {get;}
UtcNow Property datetime UtcNow {get;}
静的プロパティの値を取得するには、次の構文を使用します。
[<ClassName>]::<Property>
たとえば、次のコマンドは、クラスの UtcNow 静的プロパティの値を System.DateTime
取得します。
[System.DateTime]::UtcNow
メンバー アクセス列挙体
PowerShell 3.0 以降では、メンバー アクセス演算子 (.
) を使用してリスト コレクションに存在しないプロパティにアクセスすると、PowerShell はコレクション内の項目を自動的に列挙し、各アイテムのプロパティの値を返します。 詳細については、「 about_Member-Access_Enumeration」を参照してください。
例
このコマンドは、返されるすべてのサービスの DisplayName プロパティの値を Get-Service
返します。
(Get-Service).DisplayName
Application Experience
Application Layer Gateway Service
Windows All-User Install Agent
Application Identity
Application Information
...
すべてのコレクションには、コレクション内のオブジェクトの数を返す Count プロパティがあります。
(Get-Service).Count
176
PowerShell 3.0 以降では、0 個のオブジェクトまたは 1 つのオブジェクトの Count または Length プロパティを要求すると、PowerShell は正しい値を返します。
(Get-Service Audiosrv).Count
1
個々のオブジェクトとコレクションにプロパティが存在する場合は、コレクションのプロパティのみが返されます。
$collection = @(
[pscustomobject]@{length = "foo"}
[pscustomobject]@{length = "bar"}
)
# PowerShell returns the collection's Length.
$collection.length
2