use Win32::Lanman; if( scalar @ARGV ) { @Machines = @ARGV; } else { push( @Machines, Win32::NodeName() ); } foreach my $Machine ( @Machines ) { my @List; $Machine = "\\\\" . $Machine; $Machine =~ s/\//\\/; $Machine =~ s/^\\{2,}/\\\\/; print "\nShare list for '$Machine'\n"; if( Win32::Lanman::NetShareEnum( $Machine, \@List ) ) { my $iCount = 0; printf( "\n % 4s %- 16s %- 20s %s\n %- 4s %- 16s %- 20s %s\n", "Num", "Share Name", "Remark", "Path", "-" x 4, "-" x 16, "-" x 20, "-" x 30 ); foreach my $Share ( @List ) { my( $Remark, $Path, $NetName ); $NetName = $Share->{netname}; if( "" ne $Share->{remark} ) { $Remark = "($Share->{remark})"; } if( "" ne $Share->{path} ) { $Path = $Share->{path}; } else { $Path = "Access Denied"; } printf( " % 3d) %- 16s %- 20s %s\n", ++$iCount, $NetName, $Remark, $Path ); } } else { print "...not available : " . Win32::FormatMessage( Win32::Lanman::GetLastError() ) . "\n"; } print "\n"; }