Calculate how many Gigabytes you need to extend your disk with, to gain a certain percentage free disk space, with this PowerShell script!

This evening i was asked if i did remember how to do a percentage calculation, in order to tell by how many gigabyte a disk needed to be extended to gain 20% free disk space.

The result was this PowerShell script, that i am sharing with you!

## Usage

To use this script you need to load the function, and then run it with three parameters like this

Get-DiskExtentionInfo -CurrSpaceTotal 2000 -CurrSpaceFree 100 -TargetFreePerc 0.2

This will return as a object, you can either add it to a variable like this

$DiskInfo = Get-DiskExtentionInfo -CurrSpaceTotal 2000 -CurrSpaceFree 100 -TargetFreePerc 0.2

Or you can access the info directly like this

(Get-DiskExtentionInfo -CurrSpaceTotal 2000 -CurrSpaceFree 100 -TargetFreePerc 0.2).ExtendWith

## The Script: Get-DiskExtentionInfo

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
Function Get-DiskExtentionInfo { [cmdletbinding()] Param ( # Set starting variables [Parameter(Mandatory=$True)] [int]$CurrSpaceTotal, [Parameter(Mandatory=$True)] [int]$CurrSpaceFree, [Parameter(Mandatory=$True)] [string]$TargetFreePerc ) # Calculate how much space is in use right now $CurrSpaceInUse = $CurrSpaceTotal-$CurrSpaceFree # Calculate the number to divide with $DivideNumber = 1-$TargetFreePerc # Finding the new total size of the disk. $NewTotalSize = $CurrSpaceInUse/$DivideNumber # Find out by how much you need to extent the disk with $NewExtend = $NewTotalSize-$CurrSpaceTotal # Calculate how much diskspace is free now $NewFree = $NewTotalSize-$CurrSpaceInUse # Generate the return object $Return = New-Object -TypeName PSObject $Return | Add-Member -MemberType NoteProperty -Name TotalSpace -Value $NewTotalSize $Return | Add-Member -MemberType NoteProperty -Name FreeSpace -Value $NewFree $Return | Add-Member -MemberType NoteProperty -Name ExtendWith -Value $NewExtend Return $Return } |

## Example usage

Get-DiskExtentionInfo -CurrSpaceTotal 2000 -CurrSpaceFree 100 -TargetFreePerc 0.2

Will return the following information

1 2 3 |
TotalSpace FreeSpace ExtendWith ---------- --------- ---------- 2375 475 375 |