use strict; use Win32::DriveInfo; use Win32::NetAdmin; use Data::Dumper; my $capacity_href; my @servers = ('hqteradcm1','hqteradcm2','hcodevj248'); for my $server (@servers) { my @disks; my $target = '\\\\'.$server.'\\'; # Find all drives on server $target Win32::NetAdmin::GetServerDisks($target, \@disks); # Change array elements from C: to \\\\server\\c$\\ map { s/(.*):/$target\L$1\$\\/; } @disks; for my $drive (@disks) { # Find drive types my $type = Win32::DriveInfo::DriveType($drive); # Test for valid drive types - if($type =~ /(?:3|4)/) { # Find total and free space on drive my ($total,$free) = (Win32::DriveInfo::DriveSpace($drive))[5,6]; $drive =~ s/^\\\\.*\\(.)\$\\/\U$1:\//; $capacity_href->{$server}->{$drive} = { total => $total, free => $free }; } } } print Dumper $capacity_href; exit 0;