use Win32::OLE (); my $computer = '.'; my $obj = Win32::OLE->GetObject("winmgmts:\\\\$computer\\root\\cimv2") or die("$^E\n"); my $devices = $obj->ExecQuery(" SELECT * FROM Win32_CDROMDrive "); foreach my $device (Win32::OLE::in $devices) { print $device->{ DeviceID }, $/, $device->{ Description }, $/, $device->{ Name }, $/; } #### use Win32::OLE (); my $computer = '.'; my $obj = Win32::OLE->GetObject("winmgmts:\\\\$computer\\root\\cimv2") or die("$^E\n"); my $devices = $obj->ExecQuery(" SELECT * FROM Win32_SCSIControllerDevice "); foreach my $device (Win32::OLE::in $devices) { my $dependant = $device->{Dependent}; print $dependant->{ DeviceID }, $/, $dependant->{ Description }, $/, $dependant->{ Name }, $/; }