use Win32::OLE qw(in with); use Win32::Registry; use Win32::OLE('in'); use constant wbemFlagReturnImmediately => 0x10; use constant wbemFlagForwardOnly => 0x20; my $WMI = Win32::OLE->new('WbemScripting.SWbemLocator') || die "Cannot access WMI on local machine: ", Win32::OLE->LastError; $host = "COMPUTER"; my $Services = $WMI->ConnectServer($host) || die "Cannot access WMI on remote machine: ", Win32::OLE->LastError; my $sys_set = $Services->InstancesOf("Win32_Printer"); foreach my $sys (in($sys_set)) { my $share = $sys->{Shared}; if ($share eq 1) { print $sys->{ShareName}; } }