Immediate Solutions


Gathering Information with Shell Scripting

Shell scripting is very limited when it comes to gathering system resource information. Most new devices are designed specifically to work with Windows, not DOS, and most resource configuration tools are GUI-controlled and not command-line controllable. However, there are still several tools and methods you can utilize to collect and report resource information through shell scripting.

Collecting Information Using SRVINFO

SRVINFO is a resource kit utility to display various system information from the command line. The basic syntax of the SRVINFO command is:

 SRVINFO /  commands \computer  

Here, computer is the name of the computer to collect information from, and the available commands are:

  • -D ”Displays service drivers

  • -NS ”Does not display service information

  • -S ”Displays shares

  • -V ”Displays Exchange and SQL version information

Here is an example to display all the information SRVINFO can report:

 SRVINFO -S -V -D 

Collecting BIOS Information

To collect BIOS (Basic Input/Output System) information from the command line, you can use REG.EXE to extract the appropriate information. To display processor information using shell scripting, proceed as follows :

  1. Create a new directory to store all files included in this example.

  2. For Windows 2000 only, obtain REG.EXE from the Windows 2000 Resource Kit and copy it to the new directory.

  3. Start a command prompt and enter " scriptfile .bat."

Here, scriptfile is the full path of the new directory from step 1 and file name of a script file that contains the following:

 @ECHO OFF  Reg Query HKLM\HARDWARE\DESCRIPTION\System\ SystemBiosVersion > BIOS.TXT  Set  Count  =3 :Count  For /f "tokens=%  Count  %" %%  I  in ('TYPE BIOS.TXT' ) Do Set  Version  =%  Version  % %%  I   Set /A  Count  +=1 If %  Count  % LSS 10 Goto Count Echo BIOS Version: %  Version  %  Reg Query HKLM\HARDWARE\DESCRIPTION\System\ SystemBiosDate > BIOS.TXT   For /f "tokens=3" %%  I  in ('TYPE BIOS.TXT' ) Do Echo BIOS Date: %%  I   Del BIOS.txt > Nul Set  Count  = Set  Version  = 
Note  

The highlighted code above must be placed on one line.

Related solution:

Found on page:

Modifying the Registry with Shell Scripting

124

Collecting Memory Information

PSTAT is a Windows 2000 resource kit utility used to display running threads from the command line. You can use this tool to display memory information. To display memory information using shell scripting, proceed as follows:

  1. Create a new directory to store all files included in this example.

  2. Obtain PSTAT.EXE from the Resource Kit and copy it to the new directory.

  3. Start a command prompt and enter " scriptfile .bat."

Here, scriptfile is the full path of the new directory from step 1 and file name of a script file that contains the following:

 PSTAT  Find " Memory: " > MEM.TXT For /F "tokens=2" %%  M  In ('Type MEM.txt') Do Echo Memory: %%  M  Del MEM.txt > Nul 

Collecting Processor Information

To collect processor information from the command line, you can use REG.EXE to extract the appropriate information. To display processor information using shell scripting, proceed as follows:

  1. Create a new directory to store all files included in this example.

  2. For Windows 2000 only, obtain REG.EXE from the Windows 2000 Resource Kit and copy it to the new directory.

  3. Start a command prompt and enter " scriptfile .bat."

Here, scriptfile is the full path of the new directory from step 1 and file name of a script file that contains the following:

  @ECHO OFF for /f "Tokens=4,5" %%i in ('reg QUERY "HKLM\HARDWARE\_ DESCRIPTION\System\CentralProcessor 
  @ECHO OFF for /f "Tokens=4,5" %%i in ('reg QUERY "HKLM\HARDWARE\_ DESCRIPTION\System\CentralProcessor\0" /v Identifier') do set_ family=%%j for /f "Tokens=6,7" %%i in ('reg QUERY "HKLM\HARDWARE\_ DESCRIPTION\System\CentralProcessor\0" /v Identifier') do set_ model=%%j for /f "Tokens=8,9" %%i in ('reg QUERY "HKLM\HARDWARE\_ DESCRIPTION\System\CentralProcessor\0" /v Identifier') do set_ step=%%j for /f "Tokens=2*" %%i in ('reg QUERY "HKLM\HARDWARE\_ DESCRIPTION\System\CentralProcessor\0" /v ~MHZ') do set _ speed=%%j  SET /a speed=%speed% SET PType=Unknown IF %family% EQU 5 ( IF %model% LSS 4 SET PType=Pentium IF %model% GEQ 4 SET PType=Pentium MMX ) IF %family% EQU 6 ( IF %model% LSS 3 SET PType=Pentium Pro IF %model% GEQ 3 ( IF %model% LSS 5 ( SET PType=Pentium II ) IF %model% EQU 5 ( If %Step% EQU 0 Set PTYPE=Pentium II or Celeron If %Step% EQU 1 Set PTYPE=Pentium II or Celeron If %Step% EQU 2 Set PTYPE=Pentium II or Pentium II Xeon If %Step% EQU 3 Set PTYPE=Pentium II or Pentium II Xeon ) IF %model% EQU 6 SET PType=Celeron IF %model% GTR 6 SET PType=Pentium III or Pentium III Xeon IF %model% EQU A SET PType=Pentium III Xeon ) ) IF %family% EQU 15 ( IF %model% GEQ 0 SET PType=Pentium 4 ) ECHO Processor Type: %PType% ECHO Processor Speed: %SPEED% MHZ 
" /v Identifier') do set_ family=%%j for /f "Tokens=6,7" %%i in ('reg QUERY "HKLM\HARDWARE\_ DESCRIPTION\System\CentralProcessor
  @ECHO OFF for /f "Tokens=4,5" %%i in ('reg QUERY "HKLM\HARDWARE\_ DESCRIPTION\System\CentralProcessor\0" /v Identifier') do set_ family=%%j for /f "Tokens=6,7" %%i in ('reg QUERY "HKLM\HARDWARE\_ DESCRIPTION\System\CentralProcessor\0" /v Identifier') do set_ model=%%j for /f "Tokens=8,9" %%i in ('reg QUERY "HKLM\HARDWARE\_ DESCRIPTION\System\CentralProcessor\0" /v Identifier') do set_ step=%%j for /f "Tokens=2*" %%i in ('reg QUERY "HKLM\HARDWARE\_ DESCRIPTION\System\CentralProcessor\0" /v ~MHZ') do set _ speed=%%j  SET /a speed=%speed% SET PType=Unknown IF %family% EQU 5 ( IF %model% LSS 4 SET PType=Pentium IF %model% GEQ 4 SET PType=Pentium MMX ) IF %family% EQU 6 ( IF %model% LSS 3 SET PType=Pentium Pro IF %model% GEQ 3 ( IF %model% LSS 5 ( SET PType=Pentium II ) IF %model% EQU 5 ( If %Step% EQU 0 Set PTYPE=Pentium II or Celeron If %Step% EQU 1 Set PTYPE=Pentium II or Celeron If %Step% EQU 2 Set PTYPE=Pentium II or Pentium II Xeon If %Step% EQU 3 Set PTYPE=Pentium II or Pentium II Xeon ) IF %model% EQU 6 SET PType=Celeron IF %model% GTR 6 SET PType=Pentium III or Pentium III Xeon IF %model% EQU A SET PType=Pentium III Xeon ) ) IF %family% EQU 15 ( IF %model% GEQ 0 SET PType=Pentium 4 ) ECHO Processor Type: %PType% ECHO Processor Speed: %SPEED% MHZ 
" /v Identifier') do set_ model=%%j for /f "Tokens=8,9" %%i in ('reg QUERY "HKLM\HARDWARE\_ DESCRIPTION\System\CentralProcessor
  @ECHO OFF for /f "Tokens=4,5" %%i in ('reg QUERY "HKLM\HARDWARE\_ DESCRIPTION\System\CentralProcessor\0" /v Identifier') do set_ family=%%j for /f "Tokens=6,7" %%i in ('reg QUERY "HKLM\HARDWARE\_ DESCRIPTION\System\CentralProcessor\0" /v Identifier') do set_ model=%%j for /f "Tokens=8,9" %%i in ('reg QUERY "HKLM\HARDWARE\_ DESCRIPTION\System\CentralProcessor\0" /v Identifier') do set_ step=%%j for /f "Tokens=2*" %%i in ('reg QUERY "HKLM\HARDWARE\_ DESCRIPTION\System\CentralProcessor\0" /v ~MHZ') do set _ speed=%%j  SET /a speed=%speed% SET PType=Unknown IF %family% EQU 5 ( IF %model% LSS 4 SET PType=Pentium IF %model% GEQ 4 SET PType=Pentium MMX ) IF %family% EQU 6 ( IF %model% LSS 3 SET PType=Pentium Pro IF %model% GEQ 3 ( IF %model% LSS 5 ( SET PType=Pentium II ) IF %model% EQU 5 ( If %Step% EQU 0 Set PTYPE=Pentium II or Celeron If %Step% EQU 1 Set PTYPE=Pentium II or Celeron If %Step% EQU 2 Set PTYPE=Pentium II or Pentium II Xeon If %Step% EQU 3 Set PTYPE=Pentium II or Pentium II Xeon ) IF %model% EQU 6 SET PType=Celeron IF %model% GTR 6 SET PType=Pentium III or Pentium III Xeon IF %model% EQU A SET PType=Pentium III Xeon ) ) IF %family% EQU 15 ( IF %model% GEQ 0 SET PType=Pentium 4 ) ECHO Processor Type: %PType% ECHO Processor Speed: %SPEED% MHZ 
" /v Identifier') do set_ step=%%j for /f "Tokens=2*" %%i in ('reg QUERY "HKLM\HARDWARE\_ DESCRIPTION\System\CentralProcessor
  @ECHO OFF for /f "Tokens=4,5" %%i in ('reg QUERY "HKLM\HARDWARE\_ DESCRIPTION\System\CentralProcessor\0" /v Identifier') do set_ family=%%j for /f "Tokens=6,7" %%i in ('reg QUERY "HKLM\HARDWARE\_ DESCRIPTION\System\CentralProcessor\0" /v Identifier') do set_ model=%%j for /f "Tokens=8,9" %%i in ('reg QUERY "HKLM\HARDWARE\_ DESCRIPTION\System\CentralProcessor\0" /v Identifier') do set_ step=%%j for /f "Tokens=2*" %%i in ('reg QUERY "HKLM\HARDWARE\_ DESCRIPTION\System\CentralProcessor\0" /v ~MHZ') do set _ speed=%%j  SET /a speed=%speed% SET PType=Unknown IF %family% EQU 5 ( IF %model% LSS 4 SET PType=Pentium IF %model% GEQ 4 SET PType=Pentium MMX ) IF %family% EQU 6 ( IF %model% LSS 3 SET PType=Pentium Pro IF %model% GEQ 3 ( IF %model% LSS 5 ( SET PType=Pentium II ) IF %model% EQU 5 ( If %Step% EQU 0 Set PTYPE=Pentium II or Celeron If %Step% EQU 1 Set PTYPE=Pentium II or Celeron If %Step% EQU 2 Set PTYPE=Pentium II or Pentium II Xeon If %Step% EQU 3 Set PTYPE=Pentium II or Pentium II Xeon ) IF %model% EQU 6 SET PType=Celeron IF %model% GTR 6 SET PType=Pentium III or Pentium III Xeon IF %model% EQU A SET PType=Pentium III Xeon ) ) IF %family% EQU 15 ( IF %model% GEQ 0 SET PType=Pentium 4 ) ECHO Processor Type: %PType% ECHO Processor Speed: %SPEED% MHZ 
" /v ~MHZ') do set _ speed=%%j
SET /a speed=%speed% SET PType=Unknown IF %family% EQU 5 ( IF %model% LSS 4 SET PType=Pentium IF %model% GEQ 4 SET PType=Pentium MMX ) IF %family% EQU 6 ( IF %model% LSS 3 SET PType=Pentium Pro IF %model% GEQ 3 ( IF %model% LSS 5 ( SET PType=Pentium II ) IF %model% EQU 5 ( If %Step% EQU 0 Set PTYPE=Pentium II or Celeron If %Step% EQU 1 Set PTYPE=Pentium II or Celeron If %Step% EQU 2 Set PTYPE=Pentium II or Pentium II Xeon If %Step% EQU 3 Set PTYPE=Pentium II or Pentium II Xeon ) IF %model% EQU 6 SET PType=Celeron IF %model% GTR 6 SET PType=Pentium III or Pentium III Xeon IF %model% EQU A SET PType=Pentium III Xeon ) ) IF %family% EQU 15 ( IF %model% GEQ 0 SET PType=Pentium 4 ) ECHO Processor Type: %PType% ECHO Processor Speed: %SPEED% MHZ
Note  

The highlighted code on the previous page must be placed on one line. The routine to determine the processor type was derived from various Intel processor spec sheets.

Gathering Information with KiXtart

KiXtart provides many macros to retrieve user information, but only a few of these macros can be used to retrieve resource information. By combining KiXtart macros and registry commands, you can collect and report various resource information through simple scripts.

Collecting BIOS Information

KiXtart does not provide any direct method to collect BIOS information. Alternatively, you can query the registry and extract the BIOS information you want using KiXtart. To collect printer information using KiXtart, proceed as follows:

  1. Create a new directory to store all files included in this example.

  2. Download and extract the latest version of KiXtart, from http://www.kixtart.org, to the new directory.

  3. Select StartRun and enter "kix32 scriptfile. "

Here, scriptfile is the full path of the new directory from step 1 and file name of a script file that contains the following:

 ; Get the system BIOS type   $SBiosType  = READVALUE("HKEY_LOCAL_MACHINE\HARDWARE\ DESCRIPTION\System","SystemBiosVersion")  ; Get the system BIOS date   $SBiosDate  = READVALUE("HKEY_LOCAL_MACHINE\HARDWARE\ DESCRIPTION\System","SystemBiosDate")  ? "BIOS Type:  $SBiosType  " ? "BIOS Date:  $SBiosDate  " SLEEP 10 
Note  

The highlighted code above must be placed on one line.

Related solution:

Found on page:

Modifying the Registry with KiXtart

129

Collecting Drive Information

Although KiXtart provides no built-in method to determine all system drives and their total size , you can perform checks for available drives and free disk space. An available drive is considered to be any drive with media present. For example, a drive without a floppy or CD-ROM is an unavailable drive. To collect information on available drives using KiXtart, proceed as follows.

  1. Create a new directory to store all files included in this example.

  2. Download and extract the latest version of KiXtart, from http://www.kixtart.org, to the new directory.

  3. Select StartRun and enter "kix32 scriptfile. "

Here, scriptfile is the full path of the new directory from step 1 and file name of a script file that contains the following:

 $  DLetter  = 67 While $  DLetter  < 91   $  Drive  = CHR($  DLetter  ) + ":" If Exist ($  Drive  )   $  DiskSpace  = GETDISKSPACE($  Drive  )   SELECT     CASE $  DiskSpace  = 0       $  DiskSpace  = "0 Bytes"     CASE $  DiskSpace  < 1024       $  DiskSpace  = $  DiskSpace  * 100       $  DiskSpace  = "$  DiskSpace  KB"     CASE $  DiskSpace  => 1024 and $  DiskSpace  < 1048576       $  DiskSpace  = ($  DiskSpace  * 100) / 1024       $  DiskSpace  = "$  DiskSpace  MB"     CASE $  DiskSpace  => 1048576       $  DiskSpace  = $  DiskSpace  / 10486       $  DiskSpace  = "$  DiskSpace  GB"     ENDSELECT  $  DiskSpace  = SUBSTR($  DiskSpace  , 1, LEN($  DiskSpace  ) - 5)      + "." + SUBSTR($  DiskSpace  ,LEN($  DiskSpace  )-4, 5)  ?"Drive $  Drive  Free Space: $  DiskSpace  "   EndIf   $  DLetter  = $  DLetter  + 1 Loop Sleep 5 
Note  

The highlighted code above must be placed on one line.

Notice that the drive letter count ( $ Dletter ) starts at 67 and runs until 91. These numbers represent ASCII characters C to Z. If you start $ Dletter with 65 (A), your script might pause and you might be prompted for a floppy disk if none is present.

Collecting Operating System Information

To collect OS information using KiXtart, proceed as follows:

  1. Create a new directory to store all files included in this example.

  2. Download and extract the latest version of KiXtart, from http://www.kixtart.org, to the new directory.

  3. Select StartRun and enter "kix32 scriptfile. "

Here, scriptfile is the full path of the new directory from step 1 and file name of a script file that contains the following:

 ; Initialize variables $  SUITE  = "" SELECT ; Product Suite?   CASE @PRODUCTSUITE = 1     $  SUITE  = "Small Business"   CASE @PRODUCTSUITE = 2     $  SUITE  = "Enterprise"   CASE @PRODUCTSUITE = 4     $  SUITE  = "BackOffice"   CASE @PRODUCTSUITE = 8     $  SUITE  = "CommunicationServer"   CASE @PRODUCTSUITE = 16     $  SUITE  = "Terminal Server"   CASE @PRODUCTSUITE = 32     $  SUITE  = "Small Business (Restricted)"   CASE @PRODUCTSUITE = 64     $  SUITE  = "EmbeddedNT"   CASE @PRODUCTSUITE = 128     $  SUITE  = "DataCenter"   CASE @PRODUCTSUITE = "256"     $  SUITE  = "Single user Terminal Server"   CASE @PRODUCTSUITE = 512     $  SUITE  = "Home Edition"   CASE @PRODUCTSUITE = 1024     $  SUITE  = "Blade Server"   CASE 1     $  SUITE  = "UNDETERMINED" ENDSELECT ? "Operating System: @PRODUCTTYPE" ; Display OS type ? "Build:            @BUILD" ; Display the build number ? "Suite:            " + $  SUITE  ; Display the product suite ? "Service Pack:     @CSD" ; Display the service pack SLEEP 10 

Collecting Printer Information

KiXtart does not provide any direct method to collect information about all the printers installed on a system. Alternatively, you can query the registry and extract the printer information you want using KiXtart. To collect printer information using KiXtart, proceed as follows:

  1. Create a new directory to store all files included in this example.

  2. Download and extract the latest version of KiXtart, from http://www.kixtart.org, to the new directory.

  3. Select StartRun and enter "kix32 scriptfile. "

Here, scriptfile is the full path of the new directory from step 1 and file name of a script file that contains the following:

  $  Printers  ="HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Control\Print\Printers\"  $  Index  =0 :GatherInfo $  Printer  =enumkey("$  Printers  ",$Index) If @Error=0   $  Desc  = Readvalue("$  Printers  $  Printer  ","Description")   $  Loc  = Readvalue("$  Printers  $  Printer  ","Location")   $  Port  = Readvalue("$  Printers  $  Printer  ","Port")   $  Share  = Readvalue("$  Printers  $  Printer  ","Share Name")   ? "Printer: $  Printer  "   ? "Description: $  Desc  "   ? "Location: $  Loc  "   ? "Port: $  Port  "   ? "Share: $  Share  "   ?   ?$  Index  = $  Index  + 1   Goto GatherInfo EndIf Sleep 10 
Note  

The highlighted code above must be placed on one line.

Collecting Processor Information

KiXtart includes the @CPU and @MHZ macros to provide the name and speed of the primary processor installed on a system. Additionally, you can query the registry and extract the processor count using KiXtart. To collect processor information using KiXtart, proceed as follows:

  1. Create a new directory to store all files included in this example.

  2. Download and extract the latest version of KiXtart, from http://www.kixtart.org, to the new directory.

  3. Select StartRun and enter "kix32 scriptfile. "

Here, scriptfile is the full path of the new directory from step 1 and file name of a script file that contains the following:

 ;  Get the number of processors $  ProCount  = 0 $  Count  = 0 WHILE $  Count  < 65  $  ProTemp  = EXISTKEY("HKEY_LOCAL_MACHINE\HARDWARE\   DESCRIPTION\System\CentralProcessor$ProCount")  IF $  ProTemp  = 0     $  ProCount  = $  ProCount  + 1   ENDIF   $  Count  = $  Count  + 1 LOOP ; The code below is to simply display the final results ? "Processor Count: $  ProCount  " ? "Processor Name: " + TRIM(@CPU) ? "Processor Speed: @MHZ MHZ" SLEEP 10 
Note  

The highlighted code above must be placed on one line.

Gathering Information with WMI

Windows Management Instrumentation provides centralized management system for almost all the resources on your system. Through various WMI classes and Windows Script Host, you can collect and report various resource information through simple scripts.

Tip  

The examples in the following sections illustrate only a few of the classes and class properties that WMI has to offer. Consult the WMI SDK documentation for a complete list of classes and their properties.

Collecting Battery Information

The Win32_Battery class allows you to query laptop battery and Uninterruptible Power Supply (UPS) information through WMI. To collect battery information on a system using WMI, proceed as follows:

  1. Create a new directory to store all files included in this example.

  2. Download and install the latest version of Windows Script Host, from http://www.microsoft.com, to the new directory.

  3. Select StartRun and enter "cscript scriptfile .vbs."

Here, scriptfile is the full path and file name of a script file that contains the following:

  Set  BatterySet  = GetObject("winmgmts:").InstancesOf ("Win32_Battery")  For each  Battery  in  BatterySet  Select Case  Battery  .Chemistry   Case 1  BType  = "Other"   Case 2  BType  = "Unknown"   Case 3  BType  = "Lead Acid"   Case 4  BType  = "Nickel Cadmium"   Case 5  BType  = "Nickel Metal Hydride"   Case 6  BType  = "Lithium-ion"   Case 7  BType  = "Zinc air"   Case 8  BType  = "Lithium Polymer"  End Select  Select Case  Battery  .BatteryStatus   Case 1  BStatus  = "Other"   Case 2  BStatus  = "Unknown"   Case 3  BStatus  = "Fully Charged"   Case 4  BStatus  = "Low"   Case 5  BStatus  = "Critical"   Case 6  BStatus  = "Charging"   Case 7  BStatus  = "Charging and High"   Case 8  BStatus  = "Charging and Low"   Case 9  BStatus  = "Charging and Critical"   Case 10  BStatus  = "  Undefined  "   Case 11  BStatus  = "Partially Charged"  End Select  WScript.Echo "Name: " &  Battery  .Description & VBlf & _  "Type: " &  BType  & VBlf & _  "% Left: " &  Battery  .EstimatedChargeRemaining & VBlf & _  "Minutes Left: " &  Battery  .ExpectedLife & VBlf & _  "Status: " &  BStatus  Next  
Note  

The highlighted code above must be placed on one line.

Collecting BIOS Information

The Win32_BIOS class allows you to query BIOS information through WMI. To collect BIOS information on a system using WMI, proceed as follows:

  1. Create a new directory to store all files included in this example.

  2. Download and install the latest version of Windows Script Host, from http://www.microsoft.com, to the new directory.

  3. Select StartRun and enter "cscript scriptfile .vbs."

Here, scriptfile is the full path and file name of a script file that contains the following:

  Set  BIOSSet  = GetObject("winmgmts:").InstancesOf ("Win32_BIOS")  For each  BIOS  in  BIOSSet   BDate  = Left(  BIOS  .ReleaseDate,8)  BDate  = Mid(  BDate  ,5,2) & "/" & Mid(  BDate  ,7,2) & "/" & _   Mid(  BDate  ,1,4)   WScript.Echo "Name: " &  BIOS  .Name & VBlf & _   "Manufacturer: " &  BIOS  .Manufacturer & VBlf & _   "Date: " &  BDate  & VBlf & _   "Version: " &  BIOS  .Version & VBlf & _   "Status: " &  BIOS  .Status Next 
Note  

The highlighted code above must be placed on one line.

Collecting CD-ROM Information

The Win32_CDROMDrive class allows you to query CD-ROM information through WMI. To collect CD-ROM information on a system using WMI, proceed as follows:

  1. Create a new directory to store all files included in this example.

  2. Download and install the latest version of Windows Script Host, from http://www.microsoft.com, to the new directory.

  3. Select StartRun and enter "cscript scriptfile .vbs."

Here, scriptfile is the full path and file name of a script file that contains the following:

  Set  CDSet  = GetObject("winmgmts:").InstancesOf ("Win32_CDROMDrive")  For each  CD  in  CDSet  WScript.Echo "Name: " &  CD  .Name & VBlf & _   "Drive: " &  CD  .Drive & VBlf & _   "Status: " &  CD  .Status Next 
Note  

The highlighted code above must be placed on one line.

Collecting Chassis Information

The Win32_SystemEnclosure class allows you to query system enclosure information through WMI. To collect system enclosure information on a system using WMI, proceed as follows:

  1. Create a new directory to store all files included in this example.

  2. Download and install the latest version of Windows Script Host, from http://www.microsoft.com, to the new directory.

  3. Select StartRun and enter "cscript scriptfile .vbs."

Here, scriptfile is the full path and file name of a script file that contains the following:

 Set  SystemSet  = GetObject("winmgmts:").InstancesOf ("Win32_SystemEnclosure") For each  Chassis  in  SystemSet  For Each  ChassisType  in  Chassis  .ChassisTypes     Select Case  ChassisType  Case 1         Wscript.Echo "Other"       Case 2         Wscript.Echo "Unknown"       Case 3         Wscript.Echo "Desktop"       Case 4         Wscript.Echo "Low Profile Desktop"       Case 5         Wscript.Echo "Pizza Box"       Case 6         Wscript.Echo "Mini Tower"       Case 7         Wscript.Echo "Tower"       Case 8         Wscript.Echo "Portable"       Case 9         Wscript.Echo "Laptop"       Case 10         Wscript.Echo "Notebook"       Case 11         Wscript.Echo "Hand Held"       Case 12         Wscript.Echo "Docking Station"       Case 13         Wscript.Echo "All in One"       Case 14         Wscript.Echo "Sub Notebook"       Case 15         Wscript.Echo "Space-Saving"       Case 16         Wscript.Echo "Lunch Box"       Case 17         Wscript.Echo "Main System Chassis"       Case 18         Wscript.Echo "Expansion Chassis"       Case 19         Wscript.Echo "SubChassis"       Case 20         Wscript.Echo "Bus Expansion Chassis"       Case 21         Wscript.Echo "Peripheral Chassis"       Case 22         Wscript.Echo "Storage Chassis"       Case 23         Wscript.Echo "Rack Mount Chassis"       Case 24         Wscript.Echo "Sealed-Case PC"     End Select   Next Next 
Note  

The highlighted code above must be placed on one line.

Collecting Drive Information

The Win32_LogicalDisk class allows you to query disk information through WMI. To inventory disks on a system using WMI, proceed as follows:

  1. Create a new directory to store all files included in this example.

  2. Download and install the latest version of Windows Script Host, from http://www.microsoft.com, to the new directory.

  3. Select StartRun and enter "cscript scriptfile .vbs."

Here, scriptfile is the full path and file name of a script file that contains the following:

  Set  DiskSet  = GetObject("winmgmts:").InstancesOf ("Win32_LogicalDisk")  For each  Disk  in  DiskSet  Select Case  Disk  .DriveType   Case 0  DType  = "Unknown"   Case 1     DType = "No Root Directory"   Case 2     DType = "Removable Disk"   Case 3  DType  = "Local Disk"   Case 4  DType  = "Network Drive"   Case 5  DType  = "Compact Disc"   Case 6  DType  = "RAM Disk"   End Select   WScript.Echo "Drive: " &  Disk  .DeviceID & VBlf & _   "Name: " &  Disk  .Description & VBlf & _   "Type: " &  DType  & VBlf & _   "File System: " &  Disk  .FileSystem & VBlf & _   "Size: " &  Disk  .Size & VBlf & _   "Free Space: " &  Disk  .FreeSpace & VBlf & _   "Compressed: " &  Disk  .Compressed Next 
Note  

The highlighted code on the previous page must be placed on one line.

Collecting Memory Information

The Win32_LogicalMemoryConfiguration class allows you to query memory information through WMI. To collect memory information on a system using WMI, proceed as follows:

  1. Create a new directory to store all files included in this example.

  2. Download and install the latest version of Windows Script Host, from http://www.microsoft.com, to the new directory.

  3. Select StartRun and enter "cscript scriptfile .vbs."

Here, scriptfile is the full path and file name of a script file that contains the following:

  Set  MemorySet  = GetObject("winmgmts:").InstancesOf. ("Win32_LogicalMemoryConfiguration")  For each  Memory  in  MemorySet  WScript.Echo "Total: " & _  Memory  .TotalPhysicalMemory/1024 & VBlf & _   "Virtual: " &  Memory  .TotalVirtualMemory/1024 & VBlf & _   "Page: " &  Memory  .TotalPageFileSpace/1024 Next 
Note  

The highlighted code above must be placed on one line.

Collecting Modem Information

The Win32_POTSModem class allows you to query modem information through WMI. To collect modem information on a system using WMI, proceed as follows:

  1. Create a new directory to store all files included in this example.

  2. Download and install the latest version of Windows Script Host, from http://www.microsoft.com, to the new directory.

  3. Select StartRun and enter "cscript scriptfile .vbs."

Here, scriptfile is the full path and file name of a script file that contains the following:

  Set  ModemSet  = GetObject("winmgmts:").InstancesOf ("Win32_POTSModem")  For each  Modem  in  ModemSet  WScript.Echo "Name: " &  Modem  .Name & VBlf & _   "Port: " &  Modem  .AttachedTo & VBlf & _   "Type: " &  Modem  .DeviceType & VBlf & _   "Status: " &  Modem  .Status Next 
Note  

The highlighted code above must be placed on one line.

Collecting Monitor Information

The Win32_DesktopMonitor class allows you to query information on computer monitors through WMI. To collect monitor information on a system using WMI, proceed as follows:

  1. Create a new directory to store all files included in this example.

  2. Download and install the latest version of Windows Script Host, from http://www.microsoft.com, to the new directory.

  3. Select StartRun and enter "cscript scriptfile .vbs."

Here, scriptfile is the full path and file name of a script file that contains the following:

  Set  MonitorSet  = GetObject("winmgmts:").InstancesOf ("Win32_DesktopMonitor")  For each  Monitor  in  MonitorSet  WScript.Echo "Name: " &  Monitor  .Name & VBlf & _   "Height: " &  Monitor  .ScreenHeight & VBlf & _   "Width: " &  Monitor  .ScreenWidth & VBlf & _   "Status: " &  Monitor  .Status Next 
Note  

The highlighted code on the previous page must be placed on one line.

Collecting Mouse Information

The Win32_PointingDevice class allows you to query mouse, trackball , touch screen, touch pad, and other pointing device information through WMI. To collect pointing device information on a system using WMI, proceed as follows:

  1. Create a new directory to store all files included in this example.

  2. Download and install the latest version of Windows Script Host, from http://www.microsoft.com, to the new directory.

  3. Select StartRun and enter "cscript scriptfile .vbs."

Here, scriptfile is the full path and file name of a script file that contains the following:

  Set  MouseSet  = GetObject("winmgmts:").InstancesOf ("Win32_PointingDevice")  For each  Mouse  in  MouseSet  WScript.Echo "Name: " &  Mouse  .Name & VBlf & _   "Manufacturer: " &  Mouse  .Manufacturer & VBlf & _   "Type: " &  Mouse  .HardwareType & VBlf & _   "Buttons: " &  Mouse  .NumberofButtons & VBlf & _   "Status: " &  Mouse  .Status Next 
Note  

The highlighted code above must be placed on one line.

Collecting Network Adapter Information

The Win32_NetworkAdapter class allows you to query information on network adapters through WMI. To collect Network Interface Card (NIC) information on a system using WMI, proceed as follows:

  1. Create a new directory to store all files included in this example.

  2. Download and install the latest version of Windows Script Host, from http://www.microsoft.com, to the new directory.

  3. Select StartRun and enter "cscript scriptfile .vbs."

Here, scriptfile is the full path and file name of a script file that contains the following:

  Set  NICSet  = GetObject("winmgmts:").InstancesOf ("Win32_NetworkAdapter")  For each  NIC  in  NICSet  WScript.Echo "Name: " &  NIC  .Name & VBlf & _   "Type: " &  NIC  .AdapterType & VBlf & _   "Speed: " &  NIC  .Speed & VBlf & _   "MAC: " &  NIC  .MACAddress & VBlf & _   "Addresses: " &  NIC  .NetworkAddresses Next 
Note  

The highlighted code above must be placed on one line.

Collecting Operating System Information

The Win32_OperatingSystem class allows you to query various operating system information through WMI. To collect CD-ROM information on a system using WMI, proceed as follows:

  1. Create a new directory to store all files included in this example.

  2. Download and install the latest version of Windows Script Host, from http://www.microsoft.com, to the new directory.

  3. Select StartRun and enter "cscript scriptfile .vbs."

Here, scriptfile is the full path and file name of a script file that contains the following:

  Set  OSSet  = GetObject("winmgmts:").InstancesOf ("Win32_OperatingSystem")  For each  OS  in  OSSet  WScript.Echo "OS: " &  OS  .Caption & VBlf & _   "Build: " &  OS  .BuildNumber & VBlf & _   "Version: " &  OS  .Version & VBlf & _   "Service Pack: " &  OS  .CSDVersion & VBlf & _   "ProdID: " &  OS  .SerialNumber & VBlf & _   "Install Date: " &  OS  .InstallDate & VBlf & _   "Last Bootup: " &  OS  .LastBootUpTime Next 
Note  

The highlighted code on the previous page must be placed on one line.

Collecting Printer Information

The Win32_Printer class allows you to query printer information through WMI. To collect printer information on a system using WMI, proceed as follows:

  1. Create a new directory to store all files included in this example.

  2. Download and install the latest version of Windows Script Host, from http://www.microsoft.com, to the new directory.

  3. Select StartRun and enter "cscript scriptfile .vbs."

Here, scriptfile is the full path and file name of a script file that contains the following:

  Set  PrinterSet  = GetObject("winmgmts:").InstancesOf ("Win32_Printer")  For each  Printer  in  PrinterSet  WScript.Echo "Name: " &  Printer  .Name & VBlf & _   "Location: " &  Printer  .Location & VBlf & _   "Share: " &  Printer  .ShareName & VBlf & _   "Status: " &  Printer  .Status Next 
Note  

The highlighted code above must be placed on one line.

Collecting Processor Information

The Win32_Processor class allows you to query processor information through WMI. To collect processor information on a system using WMI, proceed as follows:

  1. Create a new directory to store all files included in this example.

  2. Download and install the latest version of Windows Script Host, from http://www.microsoft.com, to the new directory.

  3. Select StartRun and enter "cscript scriptfile .vbs."

Here, scriptfile is the full path and file name of a script file that contains the following:

  Set  ProSet  = GetObject("winmgmts:").InstancesOf ("Win32_Processor")  For each  Pro  in  ProSet  WScript.Echo "Name: " &  Pro  .Name & VBlf & _   "Speed: " &  Pro  .MaxClockSpeed & VBlf & _   "Cache: " &  Pro  .L2CacheSize & " Cache" & VBlf & _   "Processor ID: " &  Pro  .ProcessorId Next 
Note  

The highlighted code above must be placed on one line.

Collecting Sound Card Information

The Win32_SoundDevice class allows you to query sound card information through WMI. To collect sound card information on a system using WMI, proceed as follows:

  1. Create a new directory to store all files included in this example.

  2. Download and install the latest version of Windows Script Host, from http://www.microsoft.com, to the new directory.

  3. Select StartRun and enter "cscript scriptfile .vbs."

Here, scriptfile is the full path and file name of a script file that contains the following:

  Set  SoundSet  = GetObject("winmgmts:").InstancesOf ("Win32_SoundDevice")  For each  Sound  in SoundSet   WScript.Echo "Card: " &  Sound  .ProductName & VBlf & _   "Manufacturer: " &  Sound  .Manufacturer Next 
Note  

The highlighted code above must be placed on one line.

Collecting Tape Drive Information

The Win32_TapeDrive class allows you to query tape drive information through WMI. To collect tape drive information on a system using WMI, proceed as follows:

  1. Create a new directory to store all files included in this example.

  2. Download and install the latest version of Windows Script Host, from http://www.microsoft.com, to the new directory.

  3. Select StartRun and enter "cscript scriptfile .vbs."

Here, scriptfile is the full path and file name of a script file that contains the following:

  Set  TapeSet  = GetObject("winmgmts:").InstancesOf ("Win32_TapeDrive")  For each  Tape  in  TapeSet  WScript.Echo "Name: " &  Tape  .Name & VBlf & _   "Hardware Compression: " &  Tape  .Compression & VBlf & _   "Needs Cleaning: " &  Tape  .NeedsCleaning & VBlf & _   "Status: " &  Tape  .Status Next 
Note  

The highlighted code above must be placed on one line.

Collecting USB Information

The Win32_PnPEntity class allows you to query USB device information through WMI. To collect USB device information on a system using WMI, proceed as follows:

  1. Create a new directory to store all files included in this example.

  2. Download and install the latest version of Windows Script Host, from http://www.microsoft.com, to the new directory.

  3. Select StartRun and enter "cscript scriptfile .vbs."

Here, scriptfile is the full path and file name of a script file that contains the following:

  Set  USBSet  = GetObject("winmgmts:").InstancesOf ("Win32_PnPEntity")  For each  USB  in  USBSet  WScript.Echo "Name: " &  USB  .Name & VBlf & _   "Manufacturer: " &  USB  .Manufacturer Next 
Note  

The highlighted code on the previous page must be placed on one line.

Collecting Video Card Information

The Win32_VideoController class allows you to query video card information through WMI. To collect video card information on a system using WMI, proceed as follows:

  1. Create a new directory to store all files included in this example.

  2. Download and install the latest version of Windows Script Host, from http://www.microsoft.com , to the new directory.

  3. Select StartRun and enter "cscript scriptfile .vbs."

Here, scriptfile is the full path and file name of a script file that contains the following:

  Set  VideoSet  = GetObject("winmgmts:").InstancesOf ("Win32_VideoController")  For each  Video  in  VideoSet  WScript.Echo "Card: " &  Video  .Description & VBlf & _   "Current: " &  Video  .VideoModeDescription Next 
Note  

The highlighted code above must be placed on one line.

Listing Installed Software

The Win32_Product class allows you to query installed software information through WMI. This class can only retrieve information on products installed with the Windows installer. To collect Installed software information on a system using WMI, proceed as follows:

  1. Create a new directory to store all files included in this example.

  2. Download and install the latest version of Windows Script Host, from http://www.microsoft.com, to the new directory.

  3. Select StartRun and enter "cscript scriptfile .vbs."

Here, scriptfile is the full path and file name of a script file that contains the following:

  Set  Software  = GetObject("winmgmts:").InstancesOf ("Win32_Product")  For each  Application  in  Software  Wscript.Echo "Name: " &  Application  .Name & VBCRLF & _   "Vendor: " &  Application  .Vendor & VBCRLF & _   "Install Date: " & Mid(  Application  .InstallDate2, 5, 2) & "/" & _   Mid(  Application  .InstallDate2, 7, 2) & "/" & _   Mid(  Application  .InstallDate2, 1, 4) Next 
Note  

The highlighted code on the previous page must be placed on one line.

Listing Hotfixes

The Win32_QuickFixEngineering class allows you to query installed hotfix and update information through WMI. To collect installed software information on a system using WMI, proceed as follows:

  1. Create a new directory to store all files included in this example.

  2. Download and install the latest version of Windows Script Host, from http://www.microsoft.com, to the new directory.

  3. Select StartRun and enter "cscript scriptfile .vbs."

Here, scriptfile is the full path and file name of a script file that contains the following:

  Set  HotFixes  = GetObject("winmgmts:").InstancesOf ("Win32_QuickFixEngineering")  For each  HotFix  in  HotFixes  Wscript.Echo "ID: " &  HotFix  .HotFixID & VBCRLF & _   "Description: " &  HotFix  .Description Next 
Note  

The highlighted code above must be placed on one line.




Windows Admin Scripting Little Black Book
Windows Admin Scripting Little Black Book (Little Black Books (Paraglyph Press))
ISBN: 1933097108
EAN: 2147483647
Year: 2004
Pages: 89

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net