use strict; use Win32::OLE 'in'; my $out="accounts.tmp"; open OUT,">$out" or die "Can't open $out for write"; &get_corp_accts(); close OUT; sub get_corp_accts{ # get ADO object, set the provider, open the connection my $ADO = Win32::OLE->new("ADODB.Connection"); $ADO->{Provider} = "ADsDSOObject"; $ADO->Open("ADSI Provider"); my $ADSPath = "LDAP://OU=Users,OU=group,DC=subdomain,DC=domain,DC=com"; # prepare and then execute the query my $users = $ADO->Execute("<$ADSPath>;(objectClass=User);samAccountName,HomeDirectory;SubTree"); until ($users->EOF){ my $homeDir=lc($users->Fields(1)->{Value}); if ($homeDir=~/^\\\\mf/){ my $account=lc($users->Fields(0)->{Value}); print OUT "$account\t$homeDir\n"; } $users->MoveNext; } $users->Close; $ADO->Close; print "Wrote Accounts\n"; } sub ole_error_check{ if (Win32::OLE->LastError( )){ die Win32::OLE->LastError(); } }