This function will remove all folders that are completely empty.  If a folder has no files, but has sub-folders with files, the parent folder will not be deleted.  Only completely empty folder chains will be deleted.
You will be given the chance to review the empty folders, and choose whether to delete them or not. 
This script is a big improvement on various simpler versions I've seen, where the sub-folders are not taken into account.
Please use the download link at the top of this page for the latest (and greatest!) version.
# This script will remove only completely empty sub-folders. 
# If a folder is empty, but has sub-folders that contain files, 
# that folder will not be deleted. 
# You will be shown a list of the empty folders, and be 
# given a choice whether to go ahead and delete them. 
# Written by BigTeddy December 11, 2011 
# Last updated: 10 October 2012 
# Version 1.2 
# Usage:  
# . .\Remove-EmptyFolders.ps1 
# Remove-EmptyFolders -Verbose 
# Remove-EmptyFolders -Path 'c:\scripts' 
function Remove-EmptyFolders { 
  param ($Path='.\') 
$delDirs = @() 
$dirs = Get-ChildItem -Path $Path -Recurse | Where-Object { ($_.PsIsContainer) } 
foreach ($dir in $dirs) { 
    $l = 0 
    $files = Get-ChildItem $dir.PSPath -Recurse | Where-Object { (!($_.PsIsContainer)) } 
    foreach ($file in $files) { 
        $l +$file.length 
        } # end foreach $file 
    if ($l -eq 0) { 
        Write-Verbose "$($dir.pspath | split-path -noqualifier) has no files"  
        $delDirs +$dir.PSPath 
        } # end if 
    else {Write-Verbose "$($dir.pspath | split-path -noqualifier) has $l bytes in files"} 
    } # end foreach $dir 
if ($delDirs) { 
    Write-Host "The following empty directories will be removed." 
    Write-Host "Press 'y' to continue, any other key to stop:" 
    $delDirs | ForEach-Object { Split-Path $_ -NoQualifier } 
    if ($host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown").Character -eq 'y') { 
        $delDirs | Remove-Item -Recurse -ErrorAction SilentlyContinue -Force  
        Write-Host "$($delDirs.count) directories deleted" 
        } # end if 
    } # end if 
else {Write-Host "No empty folders were found"} 
} # end function