Você pode usar o cmdlet Select-Object para criar novos objetos personalizados do Windows PowerShell, com propriedades selecionadas dos objetos usados em sua criação. Digite o comando a seguir para criar um novo objeto que inclua somente as propriedades Name e FreeSpace da classe Win32_LogicalDisk do WMI:

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

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

Você não pode ver o tipo de dados após a emissão do comando, mas se enviar o resultado pelo pipeline para Get-Member após Select-Object, saberá se tem um novo tipo de objeto, um 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 tem várias funções. Uma delas é a replicação de dados que poderão então ser modificados. Agora podemos lidar com o problema encontrado na seção anterior. Podemos atualizar o valor de FreeSpace em nossos objetos recém-criados e a saída incluirá um rótulo descritivo:

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




Sumário