Skip to content

Instantly share code, notes, and snippets.

@psiborg
Last active January 22, 2025 01:08
Show Gist options
  • Save psiborg/693eb84254bbf52733b9fa243b49909a to your computer and use it in GitHub Desktop.
Save psiborg/693eb84254bbf52733b9fa243b49909a to your computer and use it in GitHub Desktop.
Custom settings and scripts for Sysinternal's BGInfo

BGInfo

%USERPROFILE%\Portable\Sysinternals\BGInfo\Bginfo64.exe .\Configs\BGInfo.bgi /timer:60

%USERPROFILE%\Portable\Sysinternals\BGInfo\Bginfo64.exe .\Configs\BGInfo.bgi /popup /taskbar

BGInfo.bgi

Host Name:	<Host Name>
User Name:	<User Name>
Machine Domain:	<Machine Domain>

Manufacturer:	<Manufacturer>
Model:	<Model>
BIOS Mode:	<BIOS Mode>
Secure Boot:	<Secure Boot>

CPU:	<CPU>
Memory:	<Memory>
Free Space:	<Free Space>
Volumes:	<Volumes>

Default Gateway:	<Default Gateway>

Network Adapters:	<Network Info>
Logon Domain:	<Logon Domain>
Logon Server:	<Logon Server>

OS Edition:	<OS Product Name>, Version <DisplayVersion>
OS Version:	<OS Version Full>
OS Update Build Release: 	<UBR>
OS Architecture:	<OS Architecture>
Service Pack:	<Service Pack>
System Type:	<System Type>

IE Version:	<IE Version>

Boot Time:	<Boot Time>
Snapshot Time:	<Snapshot Time>

Custom Fields

Identifier: BIOS Mode
Replace identifier with: VB Script file
Path: %USERPROFILE%\Portable\Sysinternals\BGInfo\Scripts\BIOSMode.vbs
  
Identifier: DisplayVersion
Replace identifier with: Registry value
Path: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DisplayVersion

Identifier: DNS Servers
Replace identifier with: VB Script file
Path: %USERPROFILE%\Portable\Sysinternals\BGInfo\Scripts\DNSServers.vbs
  
Identifier: IP Addresses
Replace identifier with: VB Script file
Path: %USERPROFILE%\Portable\Sysinternals\BGInfo\Scripts\IPAddresses.vbs
  
Identifier: Manufacturer
Replace identifier with: WMI Query
Path: SELECT Manufacturer FROM Win32_ComputerSystem
  
Identifier: Model
Replace identifier with: WMI Query
Path: SELECT Model FROM Win32_ComputerSystem
  
Identifier: Network Info
Replace identifier with: VB Script file
Path: %USERPROFILE%\Portable\Sysinternals\BGInfo\Scripts\NetworkInfo.vbs
  
Identifier: Network Speeds
Replace identifier with: VB Script file
Path: %USERPROFILE%\Portable\Sysinternals\BGInfo\Scripts\NetworkSpeeds.vbs
  
Identifier: OS Architecture
Replace identifier with: WMI Query
Path: SELECT OSArchitecture FROM Win32_OperatingSystem
  
Identifier: OS BuildNumber
Replace identifier with: WMI Query
Path: SELECT BuildNumber FROM Win32_OperatingSystem
  
Identifier: OS Product Name
Replace identifier with: Registry value
Path: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductName
  
Identifier: OS ReleaseId
Replace identifier with: Registry value
Path: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ReleaseId
  
Identifier: OS Version Full
Replace identifier with: WMI Query
Path: SELECT Version FROM Win32_OperatingSystem
  
Identifier: Secure Boot
Replace identifier with: VB Script file
Path: %USERPROFILE%\Portable\Sysinternals\BGInfo\Scripts\SecureBoot.vbs
  
Identifier: Subnet Masks
Replace identifier with: VB Script file
Path: %USERPROFILE%\Portable\Sysinternals\BGInfo\Scripts\SubnetMasks.vbs
  
Identifier: UBR
Replace identifier with: Registry value
Path: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\UBR
Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
hDefKey = HKEY_LOCAL_MACHINE
strKeyPath = "SYSTEM\CurrentControlSet\Control\SecureBoot\State"
Set oReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
If oReg.EnumKey(hDefKey, strKeyPath, arrSubKeys) = 0 Then
echo "UEFI"
Else
echo "BIOS"
End If
' VBScript to get DNS server addresses of active interfaces
Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2")
Set colNetworkAdapters = objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
Dim outputString
outputString = ""
For Each objAdapter in colNetworkAdapters
If Not IsNull(objAdapter.DNSServerSearchOrder) Then
outputString = outputString & objAdapter.Description & ":" & vbCrLf & vbTab
For Each dnsServer In objAdapter.DNSServerSearchOrder
outputString = outputString & " - " & dnsServer & vbCrLf & vbTab
Next
Else
outputString = outputString & objAdapter.Description & ": None" & vbCrLf & vbTab
End If
Next
' Output the combined result as a single string
Echo outputString
' VBScript to get IPv4 addresses of active interfaces
Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2")
Set colNetworkAdapters = objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
Dim outputString
outputString = ""
For Each objAdapter in colNetworkAdapters
If Not IsNull(objAdapter.IPAddress) Then
For Each ipAddress In objAdapter.IPAddress
' Check if it's an IPv4 address (ignore IPv6)
If InStr(ipAddress, ".") > 0 Then
outputString = outputString & ipAddress & " - " & objAdapter.Description & vbCrLf & vbTab
End If
Next
Else
outputString = outputString & "None - " & objAdapter.Description & vbCrLf & vbTab
End If
Next
' Output the combined result as a single string
Echo outputString
' VBScript to output MAC Address, IP, Subnet Mask, Speed, and DNS servers for active adapters
Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2")
Set colNetworkAdapters = objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
Dim outputString
Dim firstAdapter
Dim adapterCount
firstAdapter = True ' Flag to indicate the first adapter
adapterCount = 0 ' Counter for adapters
' Count the number of active adapters
For Each objAdapter in colNetworkAdapters
adapterCount = adapterCount + 1
Next
Dim currentAdapter
currentAdapter = 0 ' Counter to track current adapter during the loop
For Each objAdapter in colNetworkAdapters
currentAdapter = currentAdapter + 1 ' Increment the current adapter counter
' Check if it is the first adapter
If firstAdapter Then
outputString = outputString & objAdapter.Description & ":" & vbCrLf
firstAdapter = False ' Set flag to false after first adapter
Else
outputString = outputString & vbTab & objAdapter.Description & ":" & vbCrLf
End If
' Get MAC Address
If Not IsNull(objAdapter.MACAddress) Then
outputString = outputString & vbTab & " - MAC: " & objAdapter.MACAddress & vbCrLf
Else
outputString = outputString & vbTab & " - MAC: None" & vbCrLf
End If
' Get IP Address
If Not IsNull(objAdapter.IPAddress) Then
outputString = outputString & vbTab & " - IP: " & objAdapter.IPAddress(0) & vbCrLf
Else
outputString = outputString & vbTab & " - IP: None" & vbCrLf
End If
' Get Subnet Mask
If Not IsNull(objAdapter.IPSubnet) Then
outputString = outputString & vbTab & " - Subnet: " & objAdapter.IPSubnet(0) & vbCrLf
Else
outputString = outputString & vbTab & " - Subnet: None" & vbCrLf
End If
' Get Adapter Speed (Convert to Gbps if >= 1000 Mbps)
Set colNetworkAdaptersSpeed = objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapter WHERE NetConnectionID IS NOT NULL AND Name = '" & objAdapter.Description & "'")
For Each objAdapterSpeed in colNetworkAdaptersSpeed
If Not IsNull(objAdapterSpeed.Speed) Then
Dim adapterSpeedMbps
adapterSpeedMbps = CDbl(objAdapterSpeed.Speed) / 1000000 ' Convert from bps to Mbps
If adapterSpeedMbps >= 1000 Then
outputString = outputString & vbTab & " - Speed: " & Round(adapterSpeedMbps / 1000, 2) & " Gbps" & vbCrLf
Else
outputString = outputString & vbTab & " - Speed: " & adapterSpeedMbps & " Mbps" & vbCrLf
End If
Else
outputString = outputString & vbTab & " - Speed: Unknown" & vbCrLf
End If
Next
' Get DNS Servers
If Not IsNull(objAdapter.DNSServerSearchOrder) Then
outputString = outputString & vbTab & " - DNS: "
For i = 0 To UBound(objAdapter.DNSServerSearchOrder)
outputString = outputString & objAdapter.DNSServerSearchOrder(i)
If i < UBound(objAdapter.DNSServerSearchOrder) Then
outputString = outputString & ", "
End If
Next
outputString = outputString & vbCrLf
Else
outputString = outputString & vbTab & " - DNS: None" & vbCrLf
End If
' Only add a blank line if this is not the last adapter
If currentAdapter < adapterCount Then
outputString = outputString & vbCrLf
End If
Next
' Output the final result
Echo outputString
' VBScript to get network speed of active interfaces in Mbps and Gbps
Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2")
Set colNetworkAdapters = objWMIService.ExecQuery("SELECT Name, Speed, NetConnectionStatus FROM Win32_NetworkAdapter WHERE NetConnectionStatus = 2")
Dim outputString
outputString = ""
For Each objAdapter in colNetworkAdapters
' Convert speed from bps
If Not IsNull(objAdapter.Speed) Then
adapterSpeedMbps = objAdapter.Speed / 1000000
' Check if speed is >= 1000 Mbps, convert to Gbps
If adapterSpeedMbps >= 1000 Then
adapterSpeedGbps = adapterSpeedMbps / 1000
outputString = outputString & Round(adapterSpeedGbps, 2) & " Gbps" & " - " & objAdapter.Name & vbCrLf & vbTab
Else
outputString = outputString & Round(adapterSpeedMbps, 2) & " Mbps" & " - " & objAdapter.Name & vbCrLf & vbTab
End If
Else
outputString = outputString & "Unknown - " & objAdapter.Name & vbCrLf
End If
Next
' Output the combined result as a single string
Echo outputString
Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
hDefKey = HKEY_LOCAL_MACHINE
Set oReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
strKeyPath = "SYSTEM\CurrentControlSet\Control\SecureBoot\State"
strValueName = "UEFISecureBootEnabled"
oReg.GetDWORDValue hDefKey,strKeyPath,strValueName,dwValue
If dwValue = 0 Then
Echo "OFF"
ElseIf dwValue = 1 Then
Echo "ON"
Else
Echo "NA"
End If
' VBScript to get Subnet Masks of active interfaces
Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2")
Set colNetworkAdapters = objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
Dim outputString
outputString = ""
For Each objAdapter in colNetworkAdapters
If Not IsNull(objAdapter.IPSubnet) Then
For Each subnetMask In objAdapter.IPSubnet
If subnetMask <> "0" And subnetMask <> "32" And subnetMask <> "64" Then
outputString = outputString & subnetMask & " - " & objAdapter.Description & vbCrLf & vbTab
End If
Next
Else
outputString = outputString & "None - " & objAdapter.Description & vbCrLf & vbTab
End If
Next
' Output the combined result as a single string
Echo outputString
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment