PowerShell 技能连载 - 探索 Select-Object

Select-Object 是一个基础的 cmdlet,多数 PowerShell 用户都经常使用它。然而,它有一些限制,不太为大家所知。

Select-Object 最常见的形式是选择可见的属性。如果不使用 Select-Object,那么 PowerShell 将自行决定该显示哪些属性,以及它们的格式:

1
Get-ChildItem -Path c:\windows\system32 -Filter *.dll

如果加上了 Select-Object,您可以自行决定哪些属性可见。例如:

1
2
Get-ChildItem -Path c:\windows\system32 -Filter *.dll |
Select-Object -Property CreationTime, Length, Name, VersionInfo

Select-Object 还可以将属性的内容向上提升一层。在前一个例子中,VersionInfo 包含另一个对象。通过使用 -ExpandProperty 属性,您可以将它的属性向上提升一层:

1
2
Get-ChildItem -Path c:\windows\system32 -Filter *.dll |
Select-Object -Property CreationTime, Length, Name -ExpandProperty VersionInfo

要查看合并属性的实际结果,请将结果再次发送给 Select-Object,因为 PowerShell 默认情况下只显示其中的一部分结果:

1
2
3
Get-ChildItem -Path c:\windows\system32 -Filter *.dll |
Select-Object -Property CreationTime, Length, Name -ExpandProperty VersionInfo |
Select-Object -Property *

除了 “*” 之外,您还可以用逗号分隔的列表来决定要查看的属性:

1
2
3
Get-ChildItem -Path c:\windows\system32 -Filter *.dll |
Select-Object -Property CreationTime, Length, Name -ExpandProperty VersionInfo |
Select-Object -Property CreationTime, Name, FileVersionRaw, CompanyName

PowerShell 技能连载 - 探索 Select-Object

http://blog.vichamp.com/2018/02/13/exploiting-select-object/

作者

吴波

发布于

2018-02-13

更新于

2022-07-06

许可协议

评论