格式化PowerShell输出

时间:2014-10-05 00:20:38

标签: powershell

我正在运行以下PowerShell命令,我希望只返回C:驱动器的结果。没别了。

命令:

gwmi win32_volume -Filter 'drivetype = 3' | select driveletter, @{Label="PercentFree";Expression= {"{0:N0}" -f ($_.freespace / $_.capacity)}}

Current Output:
driveletter                             PercentFree
-----------                             -----------
                                        41.95 %
C:                                      38.51 %

期望的输出:

C:                                      38.51 %

我可以通过从命令行中删除“driveletter”来删除列。但我不知道如何删除行。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

如果你只想要C:驱动器,为什么不只是使用C:

的过滤器
Get-WmiObject win32_volume -Filter 'DriveLetter = "C:"' | select driveletter, @{Label="PercentFree";Expression= {"{0:N0}" -f ($data.freespace / $data.capacity * 100)}}

我修正了百分比逻辑,因为0。:N0应该丢失任何东西。我只得到一个回报。

我认为这是作弊,但你也可以将输出管道输入where-Object

... | Where-Object{$_.DriveLetter}

来自评论

我以为你想知道额外的行来自哪里。我忽略了你想删除标题。这会让你想要你想要

 Get-WmiObject win32_volume -Filter 'DriveLetter = "C:"' | 
     select driveletter, @{Label="PercentFree";Expression= {"{0:N0}" -f ($data.freespace / $data.capacity * 100)}} | 
     Format-Table -HideTableHeaders

那么这个怎么样:

Get-WmiObject win32_volume -Filter 'DriveLetter = "C:"' | 
    ForEach-Object{"{0} - {1}%" -f $_.driveletter,"{0:N2}" -f ($data.freespace / $data.capacity * 100)}

C: - 49.88%