about_Properties
簡単な説明
PowerShell でオブジェクト プロパティを使用する方法について説明します。
長い説明
PowerShell では、オブジェクトと呼ばれる情報の構造化されたコレクションを使用して、データ ストア内の項目またはコンピューターの状態を表します。 通常は、Microsoft .NET Frameworkの一部であるオブジェクトを操作しますが、PowerShell でカスタム オブジェクトを作成することもできます。
項目とそのオブジェクトの間の関連付けは非常に近いです。 オブジェクトを変更するときは、通常、オブジェクトが表す項目を変更します。 たとえば、PowerShell でファイルを取得しても、実際のファイルは取得されません。 代わりに、ファイルを表す FileInfo オブジェクトを取得します。 FileInfo オブジェクトを変更すると、ファイルも変更されます。
ほとんどのオブジェクトにはプロパティがあります。 プロパティは、オブジェクトに関連付けられているデータです。 オブジェクトの種類によってプロパティが異なります。 たとえば、ファイルを表す FileInfo オブジェクトには、ファイルの読み取り専用属性の場合は$Trueを含み、読み取り専用属性がない場合は$Falseする IsReadOnly プロパティがあります。 ファイル システム ディレクトリを表す DirectoryInfo オブジェクトには、親ディレクトリへのパスを含む Parent プロパティがあります。
オブジェクトのプロパティ
オブジェクトのプロパティを取得するには、コマンドレットを Get-Member 使用します。 たとえば、 FileInfo オブジェクトのプロパティを取得するには、コマンドレットを Get-ChildItem 使用して、ファイルを表す FileInfo オブジェクトを取得します。 次に、パイプライン演算子 (|) を使用して FileInfo オブジェクトを送信します Get-Member。 次のコマンドは、PowerShell.exe ファイルを取得して送信します Get-Member。
$Pshome 自動変数には、PowerShell インストール ディレクトリのパスが含まれています。
Get-ChildItem $pshome\PowerShell.exe | Get-Member
コマンドの出力には、 FileInfo オブジェクトのメンバーが一覧表示されます。 メンバーには、プロパティとメソッドの両方が含まれます。 PowerShell で作業する場合は、オブジェクトのすべてのメンバーにアクセスできます。
メソッドではなくオブジェクトのプロパティのみを取得するには、次の例に示すように、コマンドレットの Get-Member MemberType パラメーターを値 "property" で使用します。
Get-ChildItem $pshome\PowerShell.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 プロパティがありますが、そのプロパティの値はファイルごとに異なります。
オブジェクトのプロパティの値を取得する最も一般的な方法は、dot メソッドを使用することです。 オブジェクトを含む変数や、オブジェクトを取得するコマンドなど、オブジェクトへの参照を入力します。 次に、ドット (.) の後にプロパティ名を入力します。
たとえば、次のコマンドは、PowerShell.exe ファイルの CreationTime プロパティの値を表示します。 このコマンドは Get-ChildItem 、PowerShell.exe ファイルを表す FileInfo オブジェクトを返します。 コマンドは、プロパティにアクセスする前に実行されるように、かっこで囲まれています。 Get-ChildItem次のように、コマンドの後にドットと CreationTime プロパティの名前が続きます。
(Get-ChildItem $pshome\PowerShell.exe).creationtime
Tuesday, March 18, 2008 12:07:52 AM
次の例に示すように、オブジェクトを変数に保存し、dot メソッドを使用してそのプロパティを取得することもできます。
$a = Get-ChildItem $pshome\PowerShell.exe
$a.CreationTime
Tuesday, March 18, 2008 12:07:52 AM
また、and Format-List コマンドレットをSelect-Object使用して、オブジェクトのプロパティ値を表示することもできます。 Select-Object 各 Format-List パラメーターには Property パラメーターがあります。 Property パラメーターを使用して、1 つ以上のプロパティとその値を指定できます。 または、ワイルドカード文字 (*) を使用してすべてのプロパティを表すことができます。
たとえば、次のコマンドは、PowerShell.exe ファイルのすべてのプロパティの値を表示します。
Get-ChildItem $pshome\PowerShell.exe | Format-List -Property *
PSPath : Microsoft.PowerShell.Core\FileSystem::C:\Windows\System3
2\WindowsPowerShell\v1.0\PowerShell.exe
PSParentPath : Microsoft.PowerShell.Core\FileSystem::C:\Windows\System3
2\WindowsPowerShell\v1.0
PSChildName : PowerShell.exe
PSDrive : C
PSProvider : Microsoft.PowerShell.Core\FileSystem
PSIsContainer : False
Mode : -a----
VersionInfo : File: C:\Windows\System32\WindowsPowerShell\
v1.0\PowerShell.exe
InternalName: POWERSHELL
OriginalFilename: PowerShell.EXE.MUI
FileVersion: 10.0.16299.15 (WinBuild.160101.0800)
FileDescription: Windows PowerShell
Product: Microsoft Windows Operating System
ProductVersion: 10.0.16299.15
Debug: False
Patched: False
PreRelease: False
PrivateBuild: False
SpecialBuild: False
Language: English (United States)
BaseName : PowerShell
Target : {C:\Windows\WinSxS\amd64_microsoft-windows-powershell-ex
e_31bf3856ad364e35_10.0.16299.15_none_8c022aa6735716ae\p
owershell.exe}
LinkType : HardLink
Name : PowerShell.exe
Length : 449024
DirectoryName : C:\Windows\System32\WindowsPowerShell\v1.0
Directory : C:\Windows\System32\WindowsPowerShell\v1.0
IsReadOnly : False
Exists : True
FullName : C:\Windows\System32\WindowsPowerShell\v1.0\PowerShell.ex
Extension : .exe
CreationTime : 9/29/2017 6:43:19 AM
CreationTimeUtc : 9/29/2017 1:43:19 PM
LastAccessTime : 9/29/2017 6:43:19 AM
LastAccessTimeUtc : 9/29/2017 1:43:19 PM
LastWriteTime : 9/29/2017 6:43:19 AM
LastWriteTimeUtc : 9/29/2017 1:43:19 PM
Attributes : Archive
静的プロパティ
PowerShell では、.NET クラスの静的プロパティを使用できます。 静的プロパティは、オブジェクトのプロパティである標準プロパティとは異なり、クラスのプロパティです。
クラスの静的プロパティを取得するには、Get-Member コマンドレットの Static パラメーターを使用します。
たとえば、次のコマンドはクラスの静的プロパティを 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
こちらもご覧ください
フィードバック
フィードバックの送信と表示