【问题标题】:PowerShell Get-WmiObject WIN32_VOLUME WHERE clausePowerShell Get-WmiObject WIN32_VOLUME WHERE 子句
【发布时间】:2016-01-15 21:04:53
【问题描述】:

这是我的问题。我想要实现的是仅显示驱动器类型为 3(即硬盘驱动器)但实际上有驱动器号的信息:

GET-WMIOBJECT WIN32_VOLUME | where { $_.drivetype -eq '3'}| select-object freespace, capacity, drivetype, driveletter

目前正在显示:

                freespace                      capacity                     drivetype driveletter
                ---------                      --------                     --------- -----------
                273465344                     314568704                             3
              58966519808                  128522907648                             3 C:

所以第一行我不想要。我试过添加:

where { $_.drivetype -eq '3' and $_.driveletter -ne null } and where { $_.drivetype -eq '3'} and {$_.driveletter -ne null }

【问题讨论】:

    标签: powershell powershell-2.0


    【解决方案1】:

    要过滤掉没有驱动器号的卷,请将DriveLetter 属性视为Where-Object 内的布尔值($null 和空字符串都被解释为$false)。

    确保您使用-and 而不是and(注意破折号):

    Get-WmiObject Win32_Volume |Where { $_.drivetype -eq '3' -and $_.driveletter} |Select-Object freespace,capacity,drivetype,driveletter |Format-Table -HideTableHeaders
    

    (一开始我完全看错了你的问题,这是原来的答案)

    输出通过Format-Table 隐式传输,生成您在输出中看到的表头。

    您可以使用-HideTableHeaders 开关参数自己调用Format-Table 以使它们从输出中无效:

    Get-WmiObject Win32_Volume |Where { $_.drivetype -eq '3'} |Select-Object freespace,capacity,drivetype,driveletter |Format-Table -HideTableHeaders
    

    【讨论】:

    • 非常感谢。其实你的第一个答案就是我要找的。​​span>
    • @JPLegris 太好了,那么您以 1 的价格获得了 2 ;)
    猜你喜欢
    • 1970-01-01
    • 2012-08-11
    • 1970-01-01
    • 2015-11-23
    • 2019-06-15
    • 1970-01-01
    • 1970-01-01
    • 2017-01-26
    • 1970-01-01
    相关资源
    最近更新 更多