Select-Object コマンドレットでは、対象のオブジェクトから必要なプロパティだけを選択し、独自の新しい Windows PowerShell オブジェクトを作成できます。Win32_LogicalDisk WMI クラスの Name プロパティと FreeSpace プロパティだけを含む新しいオブジェクトを作成するには、次のコマンドを入力します。

PS> Get-WmiObject -Class Win32_LogicalDisk | Select-Object -Property Name,FreeSpace

Name                                    FreeSpace
----                                    ---------
C:                                      50664845312

このコマンドではデータの型が表示されていませんが、Select-Object の後、出力結果をパイプで Get-Member に渡すと、オブジェクトの型が変化していることがわかります (PSCustomObject)。

PS> Get-WmiObject -Class Win32_LogicalDisk | Select-Object -Property Name,FreeSpace| Get-Member


   TypeName: System.Management.Automation.PSCustomObject

Name        MemberType   Definition
----        ----------   ----------
Equals      Method       System.Boolean Equals(Object obj)
GetHashCode Method       System.Int32 GetHashCode()
GetType     Method       System.Type GetType()
ToString    Method       System.String ToString()
FreeSpace   NoteProperty  FreeSpace=...
Name        NoteProperty System.String Name=C:

Select-Object には、さまざまな用途があります。たとえば、後で変更できるような形でデータを複製することが挙げられます。これで、前のセクションで取り上げた問題は解決されます。新たに作成した独自のオブジェクトでは、FreeSpace の値を更新でき、出力結果にはわかりやすいラベルが表示されます。

Get-WmiObject -Class Win32_LogicalDisk | Select-Object -Property Name,FreeSpace | ForEach-Object -Process {$_.FreeSpace = ($_.FreeSpace)/1024.0/1024.0; $_}
Name                                                                  FreeSpace
----                                                                  ---------
C:                                                                48317.7265625




目次