Enumerate physical and logical disks (Perl)

This code can be found in Chapter 7 of Windows XP Cookbook

Purchase XP Cookbook or Networking Recipes for only $25 plus shipping! While supplies last.

Find out how to download all of the Perl code from this site.

# From the book: "Windows XP Cookbook"
# ISBN: 0596007256

# ------ SCRIPT CONFIGURATION ------

use Win32::OLE qw(in);
use constant vbTab => "\x09";

$strComputer = '.';
# ------ END CONFIGURATION ---------
print "Physical Disks:\n";
$objWMI = Win32::OLE->GetObject('winmgmts:\\\\' . $strComputer . '\\root\\cimv2');
$colDisks = $objWMI->ExecQuery('select * from Win32_DiskDrive');
foreach my $objDisk (in $colDisks) {
    print ' Caption: ' . vbTab . $objDisk->Caption, "\n";
    print ' Device ID: ' . vbTab . $objDisk->DeviceID, "\n";
    print ' Manufacturer: ' . vbTab . $objDisk->Manufacturer, "\n";
    print ' Media Type: ' . vbTab . $objDisk->MediaType, "\n";
    print ' Model: ' . vbTab . $objDisk->Model, "\n";
    print ' Name: ' . vbTab . $objDisk->Name, "\n";
    print ' Partitions: ' . vbTab . $objDisk->Partitions, "\n";
    print ' Size: ' . vbTab . $objDisk->Size, "\n";
    print ' Status: ' . vbTab . $objDisk->Status, "\n";
    print "\n";
}

print "\n";
print "Logical Disks:\n";
$colDisks = $objWMI->ExecQuery('select * from Win32_LogicalDisk');
foreach my $objDisk (in $colDisks) {
    print ' DeviceID: ' . $objDisk->DeviceID, "\n";
    print ' Description: ' . $objDisk->Description, "\n";
    print ' VolumeName: ' . $objDisk->VolumeName, "\n";
    print ' DriveType: ' . $objDisk->DriveType, "\n";
    print ' FileSystem: ' . $objDisk->FileSystem, "\n";
    print ' FreeSpace: ' . $objDisk->FreeSpace, "\n";
    print ' MediaType: ' . $objDisk->MediaType, "\n";
    print ' Name: ' . $objDisk->Name, "\n";
    print ' Size: ' . $objDisk->Size, "\n";
    print "\n";
}

This code has been viewed 866 times.

New from the creators of TechTasks.com: StatSheet.com