PowerShell Oneliner #1

One of the great things about Windows PowerShell, is that it allows us IT Administrators to write relatively simple, single-line commands to retrieve specific information about our servers and present it just the way we want. I will be posting my own PowerShell Oneliners frequently and explain how they work.

Check the size of type 3, logical volumes in GB, the free space in MB and calculate the percentage free space:

Get-WmiObject Win32_logicaldisk |

Where-Object {$_.drivetype -eq 3} |

Format-Table -Property Name,VolumeName,`

@{label=”Size (GB)”;expression={[math]::truncate($_.size/1GB)}},`

@{label=”Free Space (MB)”;expression={[math]::truncate($_.freespace/1MB)}},`

@{label=”Percent Free”;expression={[math]::truncate((($_.freespace/1GB)/($_.size/1GB))*100)}}

First, I use Windows Management Instrumentation (WMI) to get all information available about the logical disks in my computer.

The result is piped to Where-Object, which filters out the objects that represent a volume.

Then I specify the way I want the output to be formatted: which is in a table, with columns showing the Driveletter, Volume Name, Size, Free Space and Percent Free. I am using a trick here to do some calculations on the properties before I display them. You can use the format @{label=”label”;expression={expression}} to achieve this.

By the way: For readability I have truncated the command at the pipeline character and used the line break character ` (backtick) in several other places. You can however put the entire command in a single line and execute it from the PowerShell Command Prompt.

2 thoughts on “PowerShell Oneliner #1

  1. How would you add a percentage sign to the results of your percent free column for report readability? I had done it using expressions before, but I have a very similar line to yours for percent free so there is no -f used like I would normally. In this case, nothing has worked. I would normally have used + “%” somewhere in the line, but where in this case or is it even possible without the -f to format the output?

    @{label=”Percent Free”;expression={[math]::truncate((($_.freespace/1GB)/($_.size/1GB))*100) + “%”}}

Leave a Reply