use strict; use Win32::OLE qw{ in }; use constant bFlagReturnImmediately => 0x10; use constant bFlagForwardOnly => 0x20; my $wmi = Win32::OLE->GetObject("winmgmts:\\\\localhost\\root\\CIMV2") or die "GetObject failed: $!\n"; my $products = $wmi->ExecQuery("SELECT * FROM Win32_Product", "WQL", bFlagReturnImmediately | bFlagForwardOnly) or die "WMI::ExecQuery failed: $!\n"; foreach my $product (in $products) { print $product->{InstallDate}, "\t", $product->{Caption}, "\n"; }