use strict; use warnings; use Win32::OLE qw(in); my $objWMIService = Win32::OLE->GetObject("winmgmts:{impersonationLevel=impersonate,(security)}//."); die "Error" unless $objWMIService; my $colDisks = $objWMIService->ExecQuery("Select * from Win32_DiskDrive"); print "Device Caption -> InterfaceType -> DeviceId\n"; print "=" x 60 . "\n"; foreach my $obj ( in( $colDisks ) ) { print join(" -> ", $obj->{Caption}, $obj->{InterfaceType} , $obj->{DeviceId}); print "\n"; } #### Device Caption -> InterfaceType -> DeviceId ============================================================ WDC WD400BB-00CLB0 -> IDE -> \\.\PHYSICALDRIVE0 WDC WD800JB-00JJA0 -> IDE -> \\.\PHYSICALDRIVE1