选择对象部件 (Select-Object)Selecting Parts of Objects (Select-Object)

本文内容

可以使用 Select-Object cmdlet 创建新的自定义 Windows PowerShell 对象(包含从用于创建它们的对象中选择的属性)。键入下面的命令以创建仅包括 Win32_LogicalDisk WMI 类的 Name 和 FreeSpace 属性的新对象:

  1. PS> Get-WmiObject -Class Win32_LogicalDisk | Select-Object -Property Name,FreeSpace
  2. Name FreeSpace
  3. ---- ---------
  4. C: 50664845312

发出该命令后,无法看到数据类型,但是如果在 Select-Object 后将结果发送到 Get-Member,可以说明你拥有新类型的对象 PSCustomObject:

  1. PS> Get-WmiObject -Class Win32_LogicalDisk | Select-Object -Property Name,FreeSpace| Get-Member
  2. TypeName: System.Management.Automation.PSCustomObject
  3. Name MemberType Definition
  4. ---- ---------- ----------
  5. Equals Method System.Boolean Equals(Object obj)
  6. GetHashCode Method System.Int32 GetHashCode()
  7. GetType Method System.Type GetType()
  8. ToString Method System.String ToString()
  9. FreeSpace NoteProperty FreeSpace=...
  10. Name NoteProperty System.String Name=C:

Select-Object 有许多用途。其中之一就是复制你稍后可修改的数据。现在,我们可以处理在上一节中遇到的问题。我们可以在新建对象中更新 FreeSpace 的值,输出内容将包括描述性标签:

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