Zaznaczanie części obiektów (Select-Object)Selecting Parts of Objects (Select-Object)

Można użyć Select-Object , aby utworzyć nowy, niestandardowy obiektów programu Windows PowerShell, które zawierają wybrane obiekty używane do tworzenia tych właściwości.You can use the Select-Object cmdlet to create new, custom Windows PowerShell objects that contain properties selected from the objects you use to create them. Wpisz następujące polecenie, aby utworzyć nowy obiekt zawierający tylko nazwę i FreeSpace właściwości klasy Win32_LogicalDisk WMI:Type the following command to create a new object that includes only the Name and FreeSpace properties of the Win32_LogicalDisk WMI class:

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

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

Typ danych nie może zobaczyć po wykonaniu tego polecenia, ale jeśli możesz przekazać wynik do elementu członkowskiego Get po Select-Object, można określić, czy masz nowy typ obiektu, PSCustomObject:You cannot see the type of data after issuing that command, but if you pipe the result to Get-Member after the Select-Object, you can tell that you have a new type of object, a 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 ma wiele zastosowań.Select-Object has many uses. Jeden z nich jest replikowanie danych, które można modyfikować.One of them is replicating data that you can then modify. Firma Microsoft może teraz obsłużyć problemu, który wystąpił poprzedniej sekcji.We can now handle the problem we ran across in the previous section. Możemy zaktualizować wartości FreeSpace w naszym nowo tworzonych obiektów i dane wyjściowe będą zawierać opisową etykietę:We can update the value of FreeSpace in our newly-created objects and the output will include the descriptive label:

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