Using PowerShell: Domain Computers as a base, this script queries logical drives of all active domain computers and shows the amount of free space in each.
$Root = "LDAP://dc=domainname,dc=local" $objDomain = New-Object System.DirectoryServices.DirectoryEntry($Root) $objSearcher = New-Object System.DirectoryServices.DirectorySearcher $objSearcher.SearchRoot = $objDomain $objSearcher.PageSize = 1000 $objSearcher.Filter = "(objectCategory=Computer)" $objSearcher.SearchScope = "Subtree" $colProplist = "name", "distinguishedname" foreach ($s in $colProplist) { $objSearcher.PropertiesToLoad.Add($s) | out-null } # Get a list of computers and loop through it $colResults = $objSearcher.FindAll() Write-Host "Found $($colResults.count) computers" foreach ($objResult in $colResults) { $objItem = $objResult.Properties $objComputer = [ADSI]"LDAP://$($objItem.distinguishedname)" # Make sure the computer account isn't disabled if (!$objComputer.PsBase.InvokeGet("AccountDisabled")) { # Do a test to see if the computer responds to WMI queries $Test = Get-WmiObject -query "Select Caption From Win32_ComputerSystem" -computername $($objItem.name) -errorAction silentlyContinue if (-not $Test) { Write-Host "$($objItem.name) is not responding" -ForegroundColor Gray } else { Write-Host $objItem.name # Get a list of logical drives that are on fixed disks and loop through it # More information about this WMI class at http://msdn.microsoft.com/en-us/library/aa394173%28v=vs.85%29.aspx $LogicalDisks = Get-WmiObject -computername $($objItem.name) -class Win32_LogicalDisk -filter "MediaType=12" | Select-Object Name, Size, FreeSpace foreach ($LogicalDisk in $LogicalDisks) { $percentage = [math]::round($LogicalDisk.FreeSpace / $LogicalDisk.Size * 100) $size = [math]::round($LogicalDisk.Size / 1GB) Write-Host " $($LogicalDisk.Name) $($percentage) % free of $($size) GB" } } } }