使用单个 PowerShell 命令以表形式返回两个(或更多)属性

使用单个 PowerShell 命令以表形式返回两个(或更多)属性

我有以下 PowerShell 命令,它返回有关连接到系统的磁盘驱动器的各种属性:

Get-WmiObject -Class Win32_Volume | Where-Object {$_.DeviceID -like "\\?\*"}

DriveLetter我只对和属性感兴趣DeviceID,并希望它们以如下形式返回:

DriveLetter    DeviceID
C:             \\?\Volume{5b982fce-d9e5-11e1-9c28-806e6f6e6963}\
D:             \\?\Volume{e9820c98-d688-11e1-a45f-001e673f1fc5}\

我知道我可以包围我的原始命令并使用点运算符一次返回我的一个属性:

(Get-WmiObject -Class Win32_Volume | Where-Object {$_.DeviceID -like "\\?\*"}).DriveLetter

反过来,会产生:

C:
D:

但我不知道如何编写一个语句来将两个(或更多)属性作为表返回。 如果无法通过单个语句完成此操作,我该怎么做才能生成所需的表格输出?

我已经在 Google 上搜索答案,但由于我对 PowerShell 还很陌生,我可能没有正确表述我的搜索词,因此没有得到我所想象的对我的问题的简单答案。

答案1

尝试这个:

Get-WmiObject -Class Win32_Volume | Where-Object {$_.DeviceID -like "\\?\*"} | Select-Object -Property DriveLetter,DeviceID

使用Get-Help Select-Object -Detailed以获取更多信息。

答案2

只需使用 Format-Table cmdlet 格式化输出:

Get-WmiObject -Class Win32_Volume | 
Where-Object {$_.DeviceID -like "\\?\*"} | 
Format-Table DriveLetter,DeviceID

生成输出:

DriveLetter                                                            DeviceID                                                              
-----------                                                            --------                                                              
C:                                                                     \\?\Volume{118e4062-2eba-4f35-9b1b-015c3c1087dc}\                     
                                                                       \\?\Volume{e2a184aa-dac8-4196-80c6-fd8c7662e377}\                     
                                                                       \\?\Volume{33697e48-1197-464c-8553-cef00429e5a4}\                     

确保您了解格式化 cmdlet(ft、fl 等)如何与管道上的对象集成。

相关内容