se Win32::OLE('in'); use constant wbemFlagReturnImmediately => 0x10; use constant wbemFlagForwardOnly => 0x20; $computer = "."; $objWMIService = Win32::OLE->GetObject ("winmgmts:\\\\$computer\\root\\CIMV2") or die "WMI connection failed.\n"; $colItems = $objWMIService->ExecQuery ("SELECT * FROM Win32_Share","WQL",wbemFlagReturnImmediately | wbemFlagForwardOnly); foreach my $objItem (in $colItems) { print "Access Mask: $objItem->{AccessMask}\n"; print "Allow Maximum: $objItem->{AllowMaximum}\n"; print "Caption: $objItem->{Caption}\n"; print "Description: $objItem->{Description}\n"; print "Install Date: $objItem->{InstallDate}\n"; print "Maximum Allowed: $objItem->{MaximumAllowed}\n"; print "Name: $objItem->{Name}\n"; print "Path: $objItem->{Path}\n"; print "Status: $objItem->{Status}\n"; print "Type: $objItem->{Type}\n"; print "\n"; } #### 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"; }