在PowerShell中获取磁盘空间值有问题

时间:2016-05-28 02:40:34

标签: powershell

我曾经通过以下代码获取磁盘空间值,但是当我将此值传递给文本框时,它会显示一些消息

$val = Get-WmiObject -Class Win32_LogicalDisk |
        Where-Object {$_.DriveType -eq 3} |
                Select-Object DeviceID, Description,`
            @{"Label"="DiskSize(GB)";"Expression"={"{0:N}" -f ($_.Size/1GB) -as [float]}}, `
                    @{"Label"="FreeSpace(GB)";"Expression"={"{0:N}" -f ($_.FreeSpace/1GB) -as [float]}} |
        FT -AutoSize

结果是我的文本框名称

$result.Text+= $val

另外,我想显示可用磁盘空间是否小于1 gb,然后它会在我的文本框中显示警告消息,那么我该怎么办?

另外,我想获得正在运行的交换服务

$outputBox.Text+= Get-Service | Where {$_.DisplayName -Like "Microsoft Exchange*"} | select-object name ,status

但是没有在文本框中显示任何内容

1 个答案:

答案 0 :(得分:2)

ft是format-table的缩写,它通常不仅仅是控制台的格式化,因此对用户来说看起来很漂亮,但它打破了powershell对象。如果要将其分配给变量,请尝试删除它。另外,如果你只想要自由空间,试试这个,虽然它可能需要根据你试图摆脱的东西进行调整

$result.Text += (Get-WmiObject -Class Win32_LogicalDisk | Where-Object {$_.DriveType -eq 3} | % {$_.deviceid + ' ' + ('{0:N}' -f ($_.FreeSpace/1GB) -as [float])}) -join '; '

$ouputBox.text += (Get-Service | Where {$_.DisplayName -Like "Microsoft Exchange*"} | % {$_.name + ' ' + $_.status}) -join '; '