El cmdlet Select-Object permite crear nuevos objetos personalizados de Windows PowerShell que contienen propiedades seleccionadas de los objetos utilizados para crearlos. Para crear un nuevo objeto que incluya sólo las propiedades Name y FreeSpace de la clase Win32_LogicalDisk de WMI, escriba el siguiente comando:
PS> Get-WmiObject -Class Win32_LogicalDisk | Select-Object -Property Name,FreeSpace Name FreeSpace ---- --------- C: 50664845312
No podrá ver el tipo de datos después de emitir este comando, pero si canaliza el resultado a Get-Member después de Select-Object, podrá ver que tiene un nuevo tipo de objeto, 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 tiene muchas aplicaciones. Una de ellas es replicar datos para modificarlos posteriormente. Ahora podemos resolver el problema que nos encontramos en la sección anterior. Podemos actualizar el valor de FreeSpace en nuestros objetos recién creados y el resultado incluirá la etiqueta descriptiva:
Get-WmiObject -Class Win32_LogicalDisk | Select-Object -Property Name,FreeSpace | ForEach-Object -Process {$_.FreeSpace = ($_.FreeSpace)/1024.0/1024.0; $_} Name FreeSpace ---- --------- C: 48317.7265625