Win32_SystemAccount - WMI sample in Perl

The foundations for Manageability in Windows 7/2008/Vista/XP/2000 and Millennium Edition/'98 are Windows Management Instrumentation (WMI; formerly WBEM) and WMI extensions for Windows Driver Model (WDM).

ActiveXperts Network Monitor provides the ability to build monitor check routines based on WMI. ActiveXperts has collected more than a hundred WMI samples. You can use these samples as a base for new check routines you can write yourself.

On this site, you can find many WMI samples.


Win32_SystemAccount

Description

The Win32_SystemAccount WMI class represents a system account. The system account is used by the operating system and services that run under Windows NT. There are many services and processes within Windows NT that need the capability to logon internally, for example, during a Windows NT installation. The system account was designed for that purpose.

The system account is an internal account, does not show up in User Manager, cannot be added to any groups, and cannot have user rights assigned to it. However, the system account does show up on an NTFS file system volume in file manager, which is located in the Permissions section of the Security menu. By default, the system account is granted full control to all files on an NTFS file system volume, which means that the system account has the same functional privileges as the administrator account.

Example(s)

use strict;
use Win32::OLE('in');

use constant wbemFlagReturnImmediately => 0x10;
use constant wbemFlagForwardOnly => 0x20;

my @computers = ("DELL17");
foreach my $computer (@computers) {
   print "\n";
   print "==========================================\n";
   print "Computer: $computer\n";
   print "==========================================\n";

   my $objWMIService = Win32::OLE->GetObject("winmgmts:\\\\$computer\\root\\CIMV2") or die "WMI connection failed.\n";
   my $colItems = $objWMIService->ExecQuery("SELECT * FROM Win32_SystemAccount", "WQL",
                  wbemFlagReturnImmediately | wbemFlagForwardOnly);

   foreach my $objItem (in $colItems) {
      print "Caption: $objItem->{Caption}\n";
      print "Description: $objItem->{Description}\n";
      print "Domain: $objItem->{Domain}\n";
      print "InstallDate: $objItem->{InstallDate}\n";
      print "LocalAccount: $objItem->{LocalAccount}\n";
      print "Name: $objItem->{Name}\n";
      print "SID: $objItem->{SID}\n";
      print "SIDType: $objItem->{SIDType}\n";
      print "Status: $objItem->{Status}\n";
      print "\n";
   }
}sub WMIDateStringToDate(strDate)
{
   return "blah";
}