È possibile utilizzare il cmdlet Select-Object per creare nuovi oggetti Windows PowerShell personalizzati contenenti proprietà selezionate dagli oggetti utilizzati per crearli. Digitare il comando seguente per creare un nuovo oggetto che include solo le proprietà Name e FreeSpace della classe Win32_LogicalDisk di WMI:

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

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

Dopo l'esecuzione del comando non è possibile visualizzare il tipo di dati, tuttavia se si reindirizza il risultato a Get-Member dopo Select-Object è possibile verificare che è presente un nuovo tipo di oggetto, ovvero 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 viene utilizzato per diversi scopi, ad esempio per la replica dei dati che è possibile modificare in un secondo momento. In tal senso consente di risolvere il problema riscontrato nella sezione precedente. È infatti possibile aggiornare il valore di FreeSpace negli oggetti appena creati in modo da includere nell'output l'etichetta descrittiva:

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




Argomenti della Guida