About
This script deals with expanding the logical volumes in windows after they have been expanded in the hypervisor. It will work on any windows server which you have remote PowerShell access to, in fact it tests for that before attempting to expand the disks.
It does however make an assumption about disks and volumes. They are hard coded rather than dynamically determined. You’ll need to update it for your server drive lettering standards.
Features
- Works remotely
- Works on multiple servers at once
Script
$AllServers = "" Function DiskPartExpand { $Server = $env:computername $DiskPartDeploymentPath = "C:\SysAdmin\Scripts\Config" $DiskPathScriptFile = $DiskPartDeploymentPath + "\DiskPartExpand.txt" $DataVolume = "d:" $LogsVolume = "e:" $TempVolume = "f:" $PageFileVolume = "w:" $DataVolExists = Test-Path -Path $DataVolume $LogsVolExists = Test-Path -Path $LogsVolume $TempVolExists = Test-Path -Path $TempVolume $PageFileVolExists = Test-Path -Path $PageFileVolume $DeployPathExists = Test-Path -Path $DiskPartDeploymentPath -PathType Container $ExpandPageVol = @" sel vol 3 extend "@ $ExpandDataVol = @" sel vol 4 extend "@ $ExpandLogsVol = @" sel vol 5 extend "@ $ExpandTempVol = @" sel vol 6 extend "@ If ($DeployPathExists -eq $false) { New-Item -Path $DiskPartDeploymentPath -ItemType Directory | Out-Null Write-Output "$Server Config folder created" } else {Write-Output "$Server Config folder already exists"} If ($DataVolExists -eq $true) { Write-Output "$Server $DataVolume Volume Found" $DiskPartCommand += $ExpandDataVol } else {Write-Output "$Server $DataVolume Volume not found"} If ($LogsVolExists -eq $true) { Write-Output "$Server $LogsVolume Volume Found" $DiskPartCommand += $ExpandLogsVol } else {Write-Output "$Server $LogsVolume Volume not found"} If ($TempVolExists -eq $true) { Write-Output "$Server $TempVolume Volume Found" $DiskPartCommand += $ExpandTempVol } else {Write-Output "$Server $TempVolume Volume not found"} If ($PageFileVolExists -eq $true) { Write-Output "$Server $PageFileVolume Volume Found" $DiskPartCommand += $ExpandPageVol } else { Write-Output "$Server $PageFileVolume Volume not found" } Set-Content -Path $DiskPathScriptFile -Value $DiskPartCommand -force -ErrorAction stop $cmd = "cmd /c diskpart /s $DiskPathScriptFile" $processID = (Invoke-WmiMethod -class Win32_process -name Create -ArgumentList $cmd -ErrorAction Stop).processid } Foreach ($Server in $AllServers) { winrm id -r:$Server 2>$null | Out-Null if ($LastExitCode -eq 0) { Write-Host "$Server Online...............................[OK]" -ForegroundColor green Write-Host "$Server Attempting Disk Expansion.............[?]" -ForegroundColor Yellow Invoke-Command -ComputerName $Server -ScriptBlock ${function:DiskPartExpand} Write-Host "$Server Disks Expanded.......................[OK]" -ForegroundColor Green } else {Write-Host "$Server unavailable...........................[!]" -ForegroundColor Red} }