| 129 | 
           rodolico | 
           1 | 
           #! perl 
  | 
        
        
            | 
            | 
           2 | 
              | 
        
        
            | 
            | 
           3 | 
           # simply exit if this is not Windows
  | 
        
        
            | 
            | 
           4 | 
           BEGIN {
  | 
        
        
            | 
            | 
           5 | 
           $^O eq "MSWin32" || exit;
  | 
        
        
            | 
            | 
           6 | 
           }
  | 
        
        
            | 
            | 
           7 | 
              | 
        
        
            | 
            | 
           8 | 
           our $VERSION = '0.1';
  | 
        
        
            | 
            | 
           9 | 
              | 
        
        
            | 
            | 
           10 | 
           # https://perlgems.blogspot.com/2012/06/retrieve-windows-system-information.html
  | 
        
        
            | 
            | 
           11 | 
           # install Win32
  | 
        
        
            | 
            | 
           12 | 
           # install Win32::SystemInfo
  | 
        
        
            | 
            | 
           13 | 
           # install Win32::DriveInfo
  | 
        
        
            | 
            | 
           14 | 
           # install Win32::IPConfig
  | 
        
        
            | 
            | 
           15 | 
           use Win32;
  | 
        
        
            | 
            | 
           16 | 
           use Win32::SystemInfo;
  | 
        
        
            | 
            | 
           17 | 
           use Win32::DriveInfo;
  | 
        
        
            | 
            | 
           18 | 
           use Win32::IPConfig;
  | 
        
        
            | 
            | 
           19 | 
           use strict;
  | 
        
        
            | 
            | 
           20 | 
           use warnings;
  | 
        
        
            | 
            | 
           21 | 
              | 
        
        
            | 
            | 
           22 | 
           print "OS Information\n";
  | 
        
        
            | 
            | 
           23 | 
           my $computer=Win32::NodeName();
  | 
        
        
            | 
            | 
           24 | 
           print "The computer name is $computer\n";
  | 
        
        
            | 
            | 
           25 | 
              | 
        
        
            | 
            | 
           26 | 
           my $domain=Win32::DomainName();
  | 
        
        
            | 
            | 
           27 | 
           print "The computer is a member of the $domain domain/workgroup\n";
  | 
        
        
            | 
            | 
           28 | 
              | 
        
        
            | 
            | 
           29 | 
           my $OS=Win32::GetOSDisplayName();
  | 
        
        
            | 
            | 
           30 | 
           print "The OS is $OS\n";
  | 
        
        
            | 
            | 
           31 | 
              | 
        
        
            | 
            | 
           32 | 
           my $fs=Win32::FsType();
  | 
        
        
            | 
            | 
           33 | 
           print "The filesytem is $fs\n";
  | 
        
        
            | 
            | 
           34 | 
              | 
        
        
            | 
            | 
           35 | 
           my $user=Win32::LoginName();
  | 
        
        
            | 
            | 
           36 | 
           print "The current user is $user\n";
  | 
        
        
            | 
            | 
           37 | 
              | 
        
        
            | 
            | 
           38 | 
           my $admin=Win32::IsAdminUser();
  | 
        
        
            | 
            | 
           39 | 
           if($admin!=0){
  | 
        
        
            | 
            | 
           40 | 
               print "$user is running this script as admin\n\n\n";
  | 
        
        
            | 
            | 
           41 | 
           }
  | 
        
        
            | 
            | 
           42 | 
           else{
  | 
        
        
            | 
            | 
           43 | 
               print "$user is not running this script as admin\n\n\n";
  | 
        
        
            | 
            | 
           44 | 
           }
  | 
        
        
            | 
            | 
           45 | 
              | 
        
        
            | 
            | 
           46 | 
           print "Processor and RAM Information\n";
  | 
        
        
            | 
            | 
           47 | 
           my %processor;
  | 
        
        
            | 
            | 
           48 | 
           Win32::SystemInfo::ProcessorInfo(%processor);
  | 
        
        
            | 
            | 
           49 | 
           for (my $i=0;$i<$processor{NumProcessors};$i++) {
  | 
        
        
            | 
            | 
           50 | 
               print "Processor$i\n";
  | 
        
        
            | 
            | 
           51 | 
               print "Processor Name: " . $processor{"Processor$i"}{ProcessorName} . "\n";
  | 
        
        
            | 
            | 
           52 | 
               print "Processor Info: " . $processor{"Processor$i"}{Identifier} . "\n";
  | 
        
        
            | 
            | 
           53 | 
               print "Processor Speed: " . $processor{"Processor$i"}{MHZ} . "MHz\n\n";
  | 
        
        
            | 
            | 
           54 | 
           }
  | 
        
        
            | 
            | 
           55 | 
              | 
        
        
            | 
            | 
           56 | 
           my %memory;
  | 
        
        
            | 
            | 
           57 | 
           Win32::SystemInfo::MemoryStatus(%memory, 'GB');
  | 
        
        
            | 
            | 
           58 | 
           print "The computer has $memory{TotalPhys} GB of RAM\n\n\n";
  | 
        
        
            | 
            | 
           59 | 
              | 
        
        
            | 
            | 
           60 | 
           my %dtypes=(0 => "Undertmined",
  | 
        
        
            | 
            | 
           61 | 
           1 => "Does Not Exist",
  | 
        
        
            | 
            | 
           62 | 
           2 => "Removable",
  | 
        
        
            | 
            | 
           63 | 
           3 => "Hardrive",
  | 
        
        
            | 
            | 
           64 | 
           4 => "Network",
  | 
        
        
            | 
            | 
           65 | 
           5 => "CDROM",
  | 
        
        
            | 
            | 
           66 | 
           6 => "RAM Disk");
  | 
        
        
            | 
            | 
           67 | 
              | 
        
        
            | 
            | 
           68 | 
           print "Drive Information\n";
  | 
        
        
            | 
            | 
           69 | 
           my @drives = Win32::DriveInfo::DrivesInUse();
  | 
        
        
            | 
            | 
           70 | 
           foreach my $drive (@drives){
  | 
        
        
            | 
            | 
           71 | 
               my $type=Win32::DriveInfo::DriveType($drive);
  | 
        
        
            | 
            | 
           72 | 
               print "Drive $drive is a $dtypes{$type}\n";
  | 
        
        
            | 
            | 
           73 | 
              | 
        
        
            | 
            | 
           74 | 
           }
  | 
        
        
            | 
            | 
           75 | 
              | 
        
        
            | 
            | 
           76 | 
           print "\n\nNetwork Information";
  | 
        
        
            | 
            | 
           77 | 
           my $ipconfig = Win32::IPConfig->new($computer)
  | 
        
        
            | 
            | 
           78 | 
                   or die "Unable to connect to $computer\n";
  | 
        
        
            | 
            | 
           79 | 
           foreach my $adapter ($ipconfig->get_adapters) {
  | 
        
        
            | 
            | 
           80 | 
               print "\nAdapter '", $adapter->get_name, "':\n";
  | 
        
        
            | 
            | 
           81 | 
              | 
        
        
            | 
            | 
           82 | 
               print "Description=", $adapter->get_description, "\n";
  | 
        
        
            | 
            | 
           83 | 
              | 
        
        
            | 
            | 
           84 | 
               print "DHCP enabled=",
  | 
        
        
            | 
            | 
           85 | 
               $adapter->is_dhcp_enabled ? "Yes" : "No", "\n";
  | 
        
        
            | 
            | 
           86 | 
              | 
        
        
            | 
            | 
           87 | 
               my @ipaddresses = $adapter->get_ipaddresses;
  | 
        
        
            | 
            | 
           88 | 
               print "IP addresses=@ipaddresses (", scalar @ipaddresses, ")\n";
  | 
        
        
            | 
            | 
           89 | 
              | 
        
        
            | 
            | 
           90 | 
               my @subnet_masks = $adapter->get_subnet_masks;
  | 
        
        
            | 
            | 
           91 | 
               print "subnet masks=@subnet_masks (", scalar @subnet_masks, ")\n";
  | 
        
        
            | 
            | 
           92 | 
              | 
        
        
            | 
            | 
           93 | 
               my @gateways = $adapter->get_gateways;
  | 
        
        
            | 
            | 
           94 | 
               print "gateways=@gateways (", scalar @gateways, ")\n";
  | 
        
        
            | 
            | 
           95 | 
              | 
        
        
            | 
            | 
           96 | 
               print "domain=", $adapter->get_domain, "\n";
  | 
        
        
            | 
            | 
           97 | 
              | 
        
        
            | 
            | 
           98 | 
               my @dns = $adapter->get_dns;
  | 
        
        
            | 
            | 
           99 | 
               print "dns=@dns (", scalar @dns, ")\n";
  | 
        
        
            | 
            | 
           100 | 
              | 
        
        
            | 
            | 
           101 | 
               my @wins = $adapter->get_wins;
  | 
        
        
            | 
            | 
           102 | 
               print "wins=@wins (", scalar @wins, ")\n";
  | 
        
        
            | 
            | 
           103 | 
           }
  | 
        
        
            | 
            | 
           104 | 
              | 
        
        
            | 
            | 
           105 | 
           <STDIN>;
  |