Командлет Select-Object позволяет создавать новые объекты Windows PowerShell, которые содержат избранные свойства существующих объектов, используемых при создании новых. Чтобы создать новый объект, который содержит только свойства Name и FreeSpace WMI-класса Win32_LogicalDisk, введите следующее:
PS> Get-WmiObject -Class Win32_LogicalDisk | Select-Object -Property Name,FreeSpace Name FreeSpace ---- --------- C: 50664845312
После выполнения этой команды нельзя увидеть тип данных; но если результат передать по конвейеру командлету Get-Member после ключевого слова Select-Object, можно увидеть новый тип объекта 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