Você está na página 1de 14

'// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~
'//
'// NAME: osinfo.vbs
'//
'// Original: http://www.cluberti.com/blog
'// Last Update: 28th December 2009
'//
'// Comment: VBS example file for use as an OS info gathering template.
'//
'// NOTE: Provided as-is - usage of this source assumes that you are at t
he
'// very least familiar with the vbscript language being used and
'// the tools used to create and debug this file.
'//
'// In other words, if you break it, you get to keep the pieces.
'//
'// Also, if you want to use this on W2K, prepare to hack, as this
'// was really designed with XP+ systems in mind.
'//
'// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~
'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~
'//
'// This script will require elevated privileges if run from a non-admin account
, so
'// calling the ElevateThisScript() Sub should get the script a full admin token
. This is
'// currently disabled, but if you need non-admin users to run this script, enab
le the
'// call to this subroutine to pop-up a dialog box (they'll of course need admin
istrative
'// credentials to put in the challenge dialog before the script will execute wi
th an
'// administrative token):
' ElevateThisScript()
'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~
'//
'// Set variables and wMI connections for scripting against:
CONST HKEY_LOCAL_MACHINE = &H80000002
CONST SEARCH_KEY = "DigitalProductID"
Dim arrSubKeys(4,1)
Dim foundKeys
Dim iValues, arrDPID
foundKeys = Array()
iValues = Array()
arrSubKeys(0,0) = "Windows PID Key: "
arrSubKeys(0,1) = "SOFTWARE\Microsoft\Windows NT\CurrentVersion"
arrSubKeys(2,0) = "Office XP PID Key: "
arrSubKeys(2,1) = "SOFTWARE\Microsoft\Office\10.0\Registration"
arrSubKeys(1,0) = "Office 2003 PID Key: "
arrSubKeys(1,1) = "SOFTWARE\Microsoft\Office\11.0\Registration"
arrSubKeys(3,0) = "Office 2007 PID Key: "
arrSubKeys(3,1) = "SOFTWARE\Microsoft\Office\12.0\Registration"
arrSubKeys(4,0) = "Office 2010 PID Key: "
arrSubKeys(4,1) = "SOFTWARE\Microsoft\Office\14.0\Registration\{10140000-0011-00
00-1000-0000000FF1CE}"
strComputer = "."
Arch = ""
Sku = ""
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strCompu
ter & "\root\default:StdRegProv")
Set objSWbemDateTime = CreateObject("WbemScripting.SWbemDateTime")
Set colOSItems = objWMIService.ExecQuery( _
"SELECT * FROM Win32_OperatingSystem",,48)
Set colProcItems = objWMIService.ExecQuery( _
"SELECT * FROM Win32_Processor",,48)
Set colCompSysItems = objWMIService.ExecQuery( _
"SELECT * FROM Win32_ComputerSystem",,48)
Set colTZItems = objWMIService.ExecQuery( _
"SELECT * FROM Win32_TimeZone",,48)
Set colCompSysProdItems = objWMIService.ExecQuery( _
"SELECT * FROM Win32_ComputerSystemProduct",,48)
Set colBIOSItems = objWMIService.ExecQuery( _
"SELECT * FROM Win32_BIOS",,48)
Set colDiskItems = objWMIService.ExecQuery( _
"SELECT * FROM Win32_LogicalDisk",,48)
Set colNetAdapConfigItems = objWMIService.ExecQuery( _
"SELECT * FROM Win32_NetworkAdapterConfiguration",,48)
Set colVideoItems = objWMIService.ExecQuery( _
"SELECT * FROM Win32_VideoController",,48)
Set colSoundItems = objWMIService.ExecQuery( _
"SELECT * FROM Win32_SoundDevice",,48)
'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~
'//
'// Get OS SKU from Win32_OperatingSystem class:
For Each objOSItem in colOSItems
If objOSItem.BuildNumber => 6000 Then
Arch = objOSItem.OSArchitecture
Select Case objOSItem.OperatingSystemSKU
Case 0 Sku = "Unknown Windows version"
Case 1 Sku = "Ultimate Edition"
Case 2 Sku = "Home Basic Edition"
Case 3 Sku = "Home Premium Edition"
Case 4 Sku = "Enterprise Edition"
Case 5 Sku = "Home Basic N Edition"
Case 6 Sku = "Business Edition"
Case 7 Sku = "Standard Server Edition"
Case 8 Sku = "Datacenter Server Edition"
Case 9 Sku = "Small Business Server Edition"
Case 10 Sku = "Enterprise Server Edition"
Case 11 Sku = "Starter Edition"
Case 12 Sku = "Datacenter Server Core Edition"
Case 13 Sku = "Standard Server Core Edition"
Case 14 Sku = "Enterprise Server Core Edition"
Case 15 Sku = "Enterprise Server Edition for Itanium-Based Systems"
Case 16 Sku = "Business N Edition"
Case 17 Sku = "Web Server Edition"
Case 18 Sku = "Cluster Server Edition"
Case 19 Sku = "Home Server Edition"
Case 20 Sku = "Storage Express Server Edition"
Case 21 Sku = "Storage Standard Server Edition"
Case 22 Sku = "Storage Workgroup Server Edition"
Case 23 Sku = "Storage Enterprise Server Edition"
Case 24 Sku = "Server For Small Business Edition"
Case 25 Sku = "Small Business Server Premium Edition"
Case Else
Sku = "Could Not Determine Operating System SKU"
End Select
End If
'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~
'//
'// Get current OS locale setting from Win32_OperatingSystem class:
Select Case objOSItem.Locale
Case 0436 Locale = "Afrikaans (South Africa)"
Case 041c Locale = "Albanian (Albania)"
' Case 045e Locale = "Amharic (Ethiopia)"
Case 0401 Locale = "Arabic (Saudi Arabia)"
Case 1401 Locale = "Arabic (Algeria)"
Case 3c01 Locale = "Arabic (Bahrain)"
Case 0c01 Locale = "Arabic (Egypt)"
Case 0801 Locale = "Arabic (Iraq)"
Case 2c01 Locale = "Arabic (Jordan)"
Case 3401 Locale = "Arabic (Kuwait)"
Case 3001 Locale = "Arabic (Lebanon)"
Case 1001 Locale = "Arabic (Libya)"
Case 1801 Locale = "Arabic (Morocco)"
Case 2001 Locale = "Arabic (Oman)"
Case 4001 Locale = "Arabic (Qatar)"
Case 2801 Locale = "Arabic (Syria)"
Case 1c01 Locale = "Arabic (Tunisia)"
Case 3801 Locale = "Arabic (U.A.E.)"
Case 2401 Locale = "Arabic (Yemen)"
Case 042b Locale = "Armenian (Armenia)"
Case 044d Locale = "Assamese"
Case 082c Locale = "Azeri (Cyrillic)"
Case 042c Locale = "Azeri (Latin)"
Case 042d Locale = "Basque"
Case 0423 Locale = "Belarusian"
Case 0445 Locale = "Bengali (India)"
Case 0845 Locale = "Bengali (Bangladesh)"
Case 141A Locale = "Bosnian (Bosnia/Herzegovina)"
Case 0402 Locale = "Bulgarian"
Case 0455 Locale = "Burmese"
Case 0403 Locale = "Catalan"
Case 045c Locale = "Cherokee (United States)"
Case 0804 Locale = "Chinese (PRC)"
Case 1004 Locale = "Chinese (Singapore)"
Case 0404 Locale = "Chinese (Taiwan)"
Case 0c04 Locale = "Chinese (Hong Kong SAR)"
Case 1404 Locale = "Chinese (Macao SAR)"
Case 041a Locale = "Croatian"
Case 101a Locale = "Croatian (Bosnia/Herzegovina)"
Case 0405 Locale = "Czech"
Case 0406 Locale = "Danish"
Case 0465 Locale = "Divehi"
Case 0413 Locale = "Dutch (Netherlands)"
Case 0813 Locale = "Dutch (Belgium)"
Case 0466 Locale = "Edo"
Case 0409 Locale = "English (United States)"
Case 0809 Locale = "English (United Kingdom)"
Case 0c09 Locale = "English (Australia)"
Case 2809 Locale = "English (Belize)"
Case 1009 Locale = "English (Canada)"
Case 2409 Locale = "English (Caribbean)"
Case 3c09 Locale = "English (Hong Kong SAR)"
Case 4009 Locale = "English (India)"
Case 3809 Locale = "English (Indonesia)"
Case 1809 Locale = "English (Ireland)"
Case 2009 Locale = "English (Jamaica)"
Case 4409 Locale = "English (Malaysia)"
Case 1409 Locale = "English (New Zealand)"
Case 3409 Locale = "English (Philippines)"
Case 4809 Locale = "English (Singapore)"
Case 1c09 Locale = "English (South Africa)"
Case 2c09 Locale = "English (Trinidad)"
Case 3009 Locale = "English (Zimbabwe)"
Case 0425 Locale = "Estonian"
Case 0438 Locale = "Faroese"
Case 0429 Locale = "Farsi"
Case 0464 Locale = "Filipino"
Case 040b Locale = "Finnish"
Case 040c Locale = "French (France)"
Case 080c Locale = "French (Belgium)"
Case 2c0c Locale = "French (Cameroon)"
Case 0c0c Locale = "French (Canada)"
Case 240c Locale = "French (DRC)"
Case 300c Locale = "French (Cote d'Ivoire)"
Case 3c0c Locale = "French (Haiti)"
Case 140c Locale = "French (Luxembourg)"
Case 340c Locale = "French (Mali)"
Case 180c Locale = "French (Monaco)"
Case 380c Locale = "French (Morocco)"
Case e40c Locale = "French (North Africa)"
Case 200c Locale = "French (Reunion)"
Case 280c Locale = "French (Senegal)"
Case 100c Locale = "French (Switzerland)"
Case 1c0c Locale = "French (West Indies)"
Case 0462 Locale = "Frisian (Netherlands)"
Case 0467 Locale = "Fulfulde (Nigeria)"
Case 042f Locale = "FYRO Macedonian"
Case 083c Locale = "Gaelic (Ireland)"
Case 043c Locale = "Gaelic (Scotland)"
Case 0456 Locale = "Galician"
Case 0437 Locale = "Georgian"
Case 0407 Locale = "German (Germany)"
Case 0c07 Locale = "German (Austria)"
Case 1407 Locale = "German (Liechtenstein)"
Case 1007 Locale = "German (Luxembourg)"
Case 0807 Locale = "German (Switzerland)"
Case 0408 Locale = "Greek"
Case 0474 Locale = "Guarani (Paraguay)"
Case 0447 Locale = "Gujarati"
Case 0468 Locale = "Hausa (Nigeria)"
Case 0475 Locale = "Hawaiian (United States)"
Case 040d Locale = "Hebrew"
Case 0439 Locale = "Hindi"
' Case 040e Locale = "Hungarian"
Case 0469 Locale = "Ibibio (Nigeria)"
Case 040f Locale = "Icelandic"
Case 0470 Locale = "Igbo (Nigeria)"
Case 0421 Locale = "Indonesian"
Case 045d Locale = "Inuktitut"
Case 0410 Locale = "Italian (Italy)"
Case 0810 Locale = "Italian (Switzerland)"
Case 0411 Locale = "Japanese"
Case 044b Locale = "Kannada"
Case 0471 Locale = "Kanuri (Nigeria)"
Case 0860 Locale = "Kashmiri"
Case 0460 Locale = "Kashmiri (Arabic)"
Case 043f Locale = "Kazakh"
Case 0453 Locale = "Khmer"
Case 0457 Locale = "Konkani"
Case 0412 Locale = "Korean"
Case 0440 Locale = "Kyrgyz (Cyrillic)"
Case 0454 Locale = "Lao"
Case 0476 Locale = "Latin"
Case 0426 Locale = "Latvian"
Case 0427 Locale = "Lithuanian"
' Case 043e Locale = "Malay (Malaysia)"
' Case 083e Locale = "Malay (Brunei Darussalam)"
Case 044c Locale = "Malayalam"
Case 043a Locale = "Maltese"
Case 0458 Locale = "Manipuri"
Case 0481 Locale = "Maori (New Zealand)"
' Case 044e Locale = "Marathi"
Case 0450 Locale = "Mongolian (Cyrillic)"
Case 0850 Locale = "Mongolian (Mongolian)"
Case 0461 Locale = "Nepali"
Case 0861 Locale = "Nepali (India)"
Case 0414 Locale = "Norwegian (Bokml)"
Case 0814 Locale = "Norwegian (Nynorsk)"
Case 0448 Locale = "Oriya"
Case 0472 Locale = "Oromo"
Case 0479 Locale = "Papiamentu"
Case 0463 Locale = "Pashto"
Case 0415 Locale = "Polish"
Case 0416 Locale = "Portuguese (Brazil)"
Case 0816 Locale = "Portuguese (Portugal)"
Case 0446 Locale = "Punjabi"
Case 0846 Locale = "Punjabi (Pakistan)"
Case 046B Locale = "Quecha (Bolivia)"
Case 086B Locale = "Quecha (Ecuador)"
Case 0C6B Locale = "Quecha (Peru)"
Case 0417 Locale = "Rhaeto-Romanic"
Case 0418 Locale = "Romanian"
Case 0818 Locale = "Romanian (Moldava)"
Case 0419 Locale = "Russian"
Case 0819 Locale = "Russian (Moldava)"
Case 043b Locale = "Sami (Lappish)"
Case 044f Locale = "Sanskrit"
Case 046c Locale = "Sepedi"
Case 0c1a Locale = "Serbian (Cyrillic)"
Case 081a Locale = "Serbian (Latin)"
Case 0459 Locale = "Sindhi (India)"
Case 0859 Locale = "Sindhi (Pakistan)"
Case 045b Locale = "Sinhalese (Sri Lanka)"
Case 041b Locale = "Slovak"
Case 0424 Locale = "Slovenian"
Case 0477 Locale = "Somali"
' Case 042e Locale = "Sorbian"
Case 0c0a Locale = "Spanish (Spain - Modern Sort)"
Case 040a Locale = "Spanish (Spain - Traditional Sort)"
Case 2c0a Locale = "Spanish (Argentina)"
Case 400a Locale = "Spanish (Bolivia)"
Case 340a Locale = "Spanish (Chile)"
Case 240a Locale = "Spanish (Colombia)"
Case 140a Locale = "Spanish (Costa Rica)"
Case 1c0a Locale = "Spanish (Dominican Republic)"
Case 300a Locale = "Spanish (Ecuador)"
Case 440a Locale = "Spanish (El Salvador)"
Case 100a Locale = "Spanish (Guatemala)"
Case 480a Locale = "Spanish (Honduras)"
Case 580a Locale = "Spanish (Latin America)"
Case 080a Locale = "Spanish (Mexico)"
Case 4c0a Locale = "Spanish (Nicaragua)"
Case 180a Locale = "Spanish (Panama)"
Case 3c0a Locale = "Spanish (Paraguay)"
Case 280a Locale = "Spanish (Peru)"
Case 500a Locale = "Spanish (Puerto Rico)"
Case 540a Locale = "Spanish (United States)"
Case 380a Locale = "Spanish (Uruguay)"
Case 200a Locale = "Spanish (Venezuela)"
Case 0430 Locale = "Sutu"
Case 0441 Locale = "Swahili"
Case 041d Locale = "Swedish"
Case 081d Locale = "Swedish (Finland)"
Case 045a Locale = "Syriac"
Case 0428 Locale = "Tajik"
Case 045f Locale = "Tamazight (Arabic)"
Case 085f Locale = "Tamazight (Latin)"
Case 0449 Locale = "Tamil"
Case 0444 Locale = "Tatar"
Case 044a Locale = "Telugu"
' Case 041e Locale = "Thai"
Case 0851 Locale = "Tibetan (Bhutan)"
Case 0451 Locale = "Tibetan (PRC)"
Case 0873 Locale = "Tigrigna (Eritrea)"
Case 0473 Locale = "Tigrigna (Ethiopia)"
Case 0431 Locale = "Tsonga"
Case 0432 Locale = "Tswana"
Case 041f Locale = "Turkish"
Case 0442 Locale = "Turkmen"
Case 0480 Locale = "Uighur (China)"
Case 0422 Locale = "Ukrainian"
Case 0420 Locale = "Urdu"
Case 0820 Locale = "Urdu (India)"
Case 0843 Locale = "Uzbek (Cyrillic)"
Case 0443 Locale = "Uzbek (Latin)"
Case 0433 Locale = "Venda"
Case 042a Locale = "Vietnamese"
Case 0452 Locale = "Welsh"
Case 0434 Locale = "Xhosa"
Case 0478 Locale = "Yi"
Case 043d Locale = "Yiddish"
Case 046a Locale = "Yoruba"
Case 0435 Locale = "Zulu"
Case 04ff Locale = "HID (Human Interface Device)"
Case Else
Locale = "Could Not Determine OS Locale"
End Select
'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~
'//
'// Set variables gathered from Win32_OperatingSystem class:
Caption = objOSItem.Caption
CSDVersion = objOSItem.CSDVersion
CSName = objOSItem.CSName
Version = objOSItem.Version
BuildType = objOSItem.BuildType
BuildNumber = objOSItem.BuildNumber
SerialNumber = objOSItem.SerialNumber
objSWbemDateTime.Value = objOSItem.InstallDate
InstallDate = objSWbemDateTime.GetVarDate(True)
objSWbemDateTime.Value = objOSItem.LastBootUpTime
LastBootUpTime = objSWbemDateTime.GetVarDate(True)
Status = objOSItem.Status
Next
'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~
'//
'// Set variables gathered from Win32_ComputerSystem class:
For Each objCompSysItem in colCompSysItems
CurrentTimeZone = objCompSysItem.CurrentTimeZone
DaylightInEffect = objCompSysItem.DaylightInEffect
TotalMemory = FormatNumber(objCompSysItem.TotalPhysicalMemory/1024^3, 2)
Next
'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~
'//
'// Set variables gathered from Win32_TimeZone class:
For Each objTZItem in colTZItems
TZName = objTZItem.StandardName
Next
'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~
'//
'// Set variables gathered from Win32_ComputerSystemProduct class:
For Each objCompSysProdItem in colCompSysProdItems
CompSysName = objCompSysProdItem.Name
IdentifyingNumber = objCompSysProdItem.IdentifyingNumber
UUID = objCompSysProdItem.UUID
Next
'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~
'//
'// Set variables gathered from Win32_BIOS class:
For Each objBIOSItem in colBIOSItems
SMBIOSVersion = objBIOSItem.SMBIOSBIOSVersion
Next
'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~
'//
'// Start echoing output to the screen
Wscript.Echo " ------------------------------------------"
Wscript.Echo " System Details"
Wscript.Echo " ------------------------------------------"
Wscript.Echo ""
Wscript.Echo " Computer Name: " & CSName
Wscript.Echo ""
Wscript.Echo ""
Wscript.Echo " Operating System Information:"
Wscript.Echo " ============================="
Wscript.Echo " Operating System: " & Caption & Arch
Wscript.Echo " Version: " & Version & " " & Sku & " " & CS
DVersion
Wscript.Echo " Build Type: " & BuildType
Wscript.Echo " Locale: " & Locale
Wscript.Echo " Serial Number: " & SerialNumber
Wscript.Echo ""
Wscript.Echo " Current Time Zone: " & TZName
Wscript.Echo " Offset from UTC: " & CurrentTimeZone/60 & " hours"
Wscript.Echo " DST In Effect: " & DaylightInEffect
Wscript.Echo ""
'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~
'//
'// Get the product keys (function at the end of script):
GetKeys()
Wscript.Echo ""
Wscript.Echo " Install Date: " & InstallDate
Wscript.Echo " Last Boot Time: " & LastBootUpTime
Wscript.Echo " Local Date/Time: " & Now()
Wscript.Echo ""
Wscript.Echo " System Status: " & Status
Wscript.Echo ""
Wscript.Echo ""
Wscript.Echo " Hardware Information:"
Wscript.Echo " ====================="
'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~
'//
'// Set and echo variables gathered from Win32_Processor class:
For Each objProcItem in colProcItems
Select Case objProcItem.Architecture
Case 0 CPUArch = "x86"
Case 1 CPUArch = "MIPS"
Case 2 CPUArch = "Alpha"
Case 3 CPUArch = "PowerPC"
Case 6 CPUArch = "Itanium"
Case 9 CPUArch = "x64"
Case Else
CPUArch = "Could Not Determine CPU Architecture"
End Select
Wscript.Echo " CPU: " & objProcItem.Name & " (" & CPUAr
ch & ")"
Next
Wscript.Echo ""
Wscript.Echo " Physical Memory: " & TotalMemory & " GB"
Wscript.Echo ""
'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~
'//
'// Set variables gathered from Win32_VideoController class:
For Each objVideoItem in colVideoItems
Wscript.Echo " Video Card: " & objVideoItem.Name
If Not objVideoItem.AdapterDACType = "" Then
Wscript.Echo " Adapter DAC: " & objVideoItem.AdapterDA
CType
End if
Wscript.Echo " PNP Device ID: " & objVideoItem.PNPDeviceID
If Not objVideoItem.AdapterRAM = "" Then
Wscript.Echo " Video RAM: " & objVideoItem.AdapterRA
M/1024^2 & " MB"
End If
Wscript.Echo " Driver Version: " & objVideoItem.DriverVersion
objSWbemDateTime.Value = objVideoItem.DriverDate
DriverDate = objSWbemDateTime.GetVarDate(False)
Wscript.Echo " Driver Date: " & DriverDate
Wscript.Echo ""
Next
'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~
'//
'// Set variables gathered from Win32_SoundDevice class:
For Each objSoundItem in colSoundItems
Wscript.Echo " Sound Card: " & objSoundItem.Name
Wscript.Echo " Manufacturer: " & objSoundItem.Manufacturer
Wscript.Echo " PNP Device ID: " & objSoundItem.PNPDeviceID
Wscript.Echo ""
Next
'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~
'//
'// Set variables gathered from Win32_LogicalDisk class:
For Each objDiskItem in colDiskItems
If objDiskItem.DriveType = 3 Then
Wscript.Echo " Volume: " & objDiskItem.Caption
Wscript.Echo " Compressed: " & objDiskItem.Compressed
Wscript.Echo " File System: " & objDiskItem.FileSystem
Wscript.Echo " Volume Size: " & FormatNumber(objDiskIt
em.Size/1024^3, 2) & " GB"
Wscript.Echo " Free Space: " & FormatNumber(objDiskIt
em.FreeSpace/1024^3, 2) & " GB"
Wscript.Echo ""
End If
Next
'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~
'//
'// Set variables gathered from Win32_NetworkAdapterConfiguration class:
For Each objNetAdapConfigItem in colNetAdapConfigItems
If isNull(objNetAdapConfigItem.IPAddress) Then
'// Skip adapter, not currently used
Else
Wscript.Echo " Network Adapter: " & objNetAdapConfigItem.De
scription
Wscript.Echo " MAC Address: " & objNetAdapConfigItem.M
ACAddress
Wscript.Echo " DHCP Enabled: " & objNetAdapConfigItem.D
HCPEnabled
Wscript.Echo " IP Address: " & Join(objNetAdapConfigI
tem.IPAddress, ",")
Wscript.Echo " Subnet Mask: " & Join(objNetAdapConfigI
tem.IPSubnet, ",")
Wscript.Echo " Default Gateway: " & Join(objNetAdapConfigI
tem.DefaultIPGateway, ",")
If objNetAdapConfigItem.DHCPEnabled = True Then
objSWbemDateTime.Value = objNetAdapConfigItem.DHCPLeaseObtained
DHCPLeaseObtained = objSWbemDateTime.GetVarDate(True)
Wscript.Echo " Lease Obtained: " & DHCPLeaseObtained
objSWbemDateTime.Value = objNetAdapConfigItem.DHCPLeaseExpires
DHCPLeaseExpires = objSWbemDateTime.GetVarDate(True)
Wscript.Echo " Lease Exipres: " & DHCPLeaseExpires
Wscript.Echo " DHCP Servers: " & objNetAdapConfigIt
em.DHCPServer
End If
Wscript.Echo " DNS Server: " & Join(objNetAdapConfigI
tem.DNSServerSearchOrder, ",")
If Not objNetAdapConfigItem.WINSPrimaryServer = "" Then
Wscript.Echo " WINS Primary Server: " & objNetAdapConfigIt
em.WINSPrimaryServer
If Not objNetAdapConfigItem.WINSSecondaryServer = "" Then
Wscript.Echo " WINS Secondary Server: " & objNetAdapConf
igItem.WINSPrimaryServer
End If
Wscript.Echo " Enable LMHosts Lookup: " & objNetAdapConfigIt
em.WINSEnableLMHostsLookup
End If
Wscript.Echo ""
End If
Next
Wscript.Echo ""
Wscript.Echo " System Information:"
Wscript.Echo " ==================="
Wscript.Echo " Computer: " & CompSysName
Wscript.Echo " Serial Number: " & IdentifyingNumber
Wscript.Echo " BIOS Version: " & SMBIOSVersion
Wscript.Echo " UUID: " & UUID
Wscript.Echo ""
'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~
'//
'// This pause call is disabled, but you may wish to enable it if running this s
cript
'// with the ElevateThisScript() subroutine call enabled above:
' PressEnter()
'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~
'//
'// Functions: GetKeys() and decodeKey(iValues, strProduct)
'//
'// Credit where credit is due - I found and modified script posted by user "Par
abellum"
'// found on http://www.visualbasicscript.com/m42793.aspx, hacked it up a bit, a
nd used
'// it here to post keys:
Public Function GetKeys()
For x = LBound(arrSubKeys, 1) To UBound(arrSubKeys, 1)
objReg.GetBinaryValue HKEY_LOCAL_MACHINE, arrSubKeys(x,1), SEARCH_KEY, arrDP
IDBytes
If Not IsNull(arrDPIDBytes) Then
Call decodeKey(arrDPIDBytes, arrSubKeys(x,0))
Else
objReg.EnumKey HKEY_LOCAL_MACHINE, arrSubKeys(x,1), arrGUIDKeys
If Not IsNull(arrGUIDKeys) Then
For Each GUIDKey In arrGUIDKeys
objReg.GetBinaryValue HKEY_LOCAL_MACHINE, arrSubKeys(x,1) &
"\" & GUIDKey, SEARCH_KEY, arrDPIDBytes

If Not IsNull(arrDPIDBytes) Then
Call decodeKey(arrDPIDBytes, arrSubKeys(x,0))
End If
Next
End If
End If
Next
End Function
Public Function decodeKey(iValues, strProduct)
Dim arrDPID
arrDPID = Array()
For i = 52 to 66
ReDim Preserve arrDPID( UBound(arrDPID) + 1 )
arrDPID( UBound(arrDPID) ) = iValues(i)
Next
Dim arrChars
arrChars = Array("B","C","D","F","G","H","J","K","M","P","Q","R","T","V"
,"W","X","Y","2","3","4","6","7","8","9")
For i = 24 To 0 Step -1
k = 0

For j = 14 To 0 Step -1
k = k * 256 Xor arrDPID(j)
arrDPID(j) = Int(k / 24)
k = k Mod 24
Next

strProductKey = arrChars(k) & strProductKey

If i Mod 5 = 0 And i <> 0 Then
strProductKey = "-" & strProductKey
End If
Next

ReDim Preserve foundKeys( UBound(foundKeys) + 1 )
foundKeys( UBound(foundKeys) ) = strProductKey
strKey = UBound(foundKeys)
Wscript.Echo " " & strProduct & "" & foundKeys(strKey)
End Function
'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~
'//
'// Subroutine: PressEnter()
'//
'// Adds a pause with a "Press the ENTER key to continue." message when called.
'//
'// Usage: Call this Subroutine to get a pause that will clear when the user pr
esses the
'// ENTER key (and ONLY the ENTER key) on their keyboard:
Sub PressEnter()
Wscript.Echo ""
strMessage = "Press the ENTER key to continue. "
Wscript.StdOut.Write strMessage
Do While Not WScript.StdIn.AtEndOfLine
Input = WScript.StdIn.Read(1)
Loop
End Sub
'//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~
'//
'// Subroutine: ElevateThisScript()
'//
'// Forces the currently running script to prompt for elevation if it detects th
at the
'// current user credentials do not have administrative privileges.
'//
'// If run on Windows XP / Server 2003 this script will cause the RunAs dialog t
o appear
'// if the user does not have administrative rights, giving the opportunity to r
un as an
'// administrator.
'//
'// If run on Windows Vista / Server 2008 this script will cause a UAC dialog to
appear
'// if the user does not have administrative rights and UAC is enabled, giving t
he
'// opportunity for the script to run properly for a LUA user.
'//
'// This Sub Attempts to call the script with its original arguments. Arguments
that
'// contain a space will be wrapped in double quotes when the script calls itsel
f again.
'//
'// Usage: Add a call to this sub (ElevateThisScript) to the beginning of your
script to
'// ensure that the script gets an administrative token.
Sub ElevateThisScript()
Const HKEY_CLASSES_ROOT = &H80000000
Const HKEY_CURRENT_USER = &H80000001
Const HKEY_LOCAL_MACHINE = &H80000002
Const HKEY_USERS = &H80000003
const KEY_QUERY_VALUE = 1
Const KEY_SET_VALUE = 2
Dim scriptEngine, engineFolder, argString, arg, Args, scriptCommand
Dim objShellApp : Set objShellApp = CreateObject("Shell.Application")
scriptEngine = Ucase(Mid(Wscript.FullName,InstrRev(Wscript.FullName,"\")
+1))
engineFolder = Left(Wscript.FullName,InstrRev(Wscript.FullName,"\"))
argString = ""
Set Args = Wscript.Arguments
For each arg in Args 'loop th
ough argument array as a collection to rebuild argument string
If instr(arg," ") > 0 Then arg = """" & arg & """" 'if the
argument contains a space wrap it in double quotes
argString = argString & " " & Arg
Next
scriptCommand = engineFolder & scriptEngine
Dim strComputer : strComputer = "."
Dim objReg, bHasAccessRight
Set objReg=GetObject("winmgmts:"_
& "{impersonationLevel=impersonate}!\\" &_
strComputer & "\root\default:StdRegProv")
'Check for administrative registry access rights
objReg.CheckAccess HKEY_LOCAL_MACHINE, "System\CurrentControlSet\Control
\CrashControl", _
KEY_SET_VALUE, bHasAccessRight
If bHasAccessRight = True Then
HasRequiredRegAccess = True
Exit Sub
Else
HasRequiredRegAccess = False
objShellApp.ShellExecute scriptCommand, " """ & Wscript.ScriptFu
llName & """" & argString, "", "runas"
WScript.Quit
End If
End Sub