簡単な説明
PowerShell でオブジェクト プロパティを使用する方法について説明します。
長い説明
PowerShell では、オブジェクトと呼ばれる情報の構造化コレクションを使用して、データ ストア内の項目またはコンピューターの状態を表します。 通常は、Microsoft .NET Framework の一部であるオブジェクトを操作しますが、PowerShell でカスタム オブジェクトを作成することもできます。
項目とそのオブジェクトの間の関連付けは非常に近いです。 オブジェクトを変更するときは、通常、オブジェクトが表す項目を変更します。 たとえば、PowerShell でファイルを取得しても、実際のファイルは取得されません。 代わりに、ファイルを表す FileInfo オブジェクトを取得します。 FileInfo オブジェクトを変更すると、ファイルも変更されます。
ほとんどのオブジェクトにはプロパティがあります。 プロパティは、オブジェクトに関連付けられているデータです。 オブジェクトの種類によってプロパティが異なります。 たとえば、ファイルを表す FileInfo オブジェクトには、IsReadOnly プロパティがあります。このプロパティには、ファイルに読み取り専用属性がある場合は $true が含まれ、そうでない場合は $false が含まれます。 ファイル システム ディレクトリを表す 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 パラメーターを使用し、値を 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 プロパティがありますが、そのプロパティの値はファイルごとに異なります。
オブジェクトのプロパティの値を取得する最も一般的な方法は、メンバー アクセス演算子 (.) を使用することです。 オブジェクトを含む変数や、オブジェクトを取得するコマンドなど、オブジェクトへの参照を入力します。 次に、演算子 (.) の後にプロパティ名を入力します。
たとえば、次のコマンドは、 ファイルの 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
Wednesday, November 13, 2024 10:12:26 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.5.0.101
FileDescription: PowerShell 7
Product: PowerShell
ProductVersion: 7.5.0-rc.1 SHA: c0142dde17137e436e302b3c4e93e2d6dc50c5c4+c0142dde17137e436e302b3c4e93e2d6dc50c5c4
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 :
Name : pwsh.exe
Length : 284704
DirectoryName : C:\Program Files\PowerShell\7-preview
Directory : C:\Program Files\PowerShell\7-preview
IsReadOnly : False
Exists : True
FullName : C:\Program Files\PowerShell\7-preview\pwsh.exe
Extension : .exe
CreationTime : 11/13/2024 10:12:26 PM
CreationTimeUtc : 11/14/2024 4:12:26 AM
LastAccessTime : 1/3/2025 1:38:13 PM
LastAccessTimeUtc : 1/3/2025 7:38:13 PM
LastWriteTime : 11/13/2024 10:12:26 PM
LastWriteTimeUtc : 11/14/2024 4:12:26 AM
LinkTarget :
UnixFileMode : -1
Attributes : Archive
静的プロパティ
PowerShell では、.NET クラスの静的プロパティを使用できます。 静的プロパティは、オブジェクトのプロパティである標準プロパティとは異なり、クラスのプロパティです。
クラスの静的プロパティを取得するには、 コマンドレットの 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>
たとえば、次のコマンドは、 クラスの静的プロパティ System.DateTime UtcNow の値を取得します。
[System.DateTime]::UtcNow
メンバー アクセス列挙型
PowerShell 3.0 以降では、メンバー アクセス演算子 (.) を使用して存在しないプロパティにアクセスすると、PowerShell によってコレクション内の項目が自動的に列挙され、各アイテムのプロパティの値が返されます。
このコマンドは、返されるすべてのサービスの DisplayName プロパティの値 Get-Service 返します。
(Get-Service).DisplayName
Application Experience
Application Layer Gateway Service
Windows All-User Install Agent
Application Identity
Application Information
...
PowerShell のほとんどのコレクションには、コレクション内の項目数を返す Count プロパティがあります。
(Get-Service).Count
176
個々のオブジェクトとコレクションにプロパティが存在する場合は、コレクションのプロパティのみが返されます。
PS> $collection = @(
[pscustomobject]@{Length = "foo"}
[pscustomobject]@{Length = "bar"}
)
# PowerShell returns the collection's Length.
$collection.Length
2
# Get the Length property of each item in the collection.
PS> $collection.GetEnumerator().Length
foo
bar
詳細については、「about_Member-Access_Enumeration」を参照してください。
こちらも参照ください
PowerShell