Sysinfo/sysinfo.ps1

162 lines
5.8 KiB
PowerShell

#sysinfo.ps1
#Inumerate a systems processor, serial number, modle number, and ammount of RAM.
param(
[switch]$write_output,
[switch]$file_location,
[string]$file_path
)
function Show-Notification { #Shows a notification in the system notification tray.
param (
[string]
$ToastTitle,
[string]
$ToastText
)
[Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType = WindowsRuntime] > $null
$Template = [Windows.UI.Notifications.ToastNotificationManager]::GetTemplateContent([Windows.UI.Notifications.ToastTemplateType]::ToastText02)
$RawXML = [xml] $Template.GetXML()
($RawXML.toast.visual.binding.text|Where-Object {$_.id -eq "1"}).AppendChild($RawXml.CreateTextNode($ToastTitle)) > $null
($RawXml.toast.visual.binding.text|Where-Object {$_.id -eq "2"}).AppendChild($RawXml.CreateTextNode($ToastText)) > $null
$SerializedXml = New-Object Windows.Data.Xml.Dom.XmlDocument
$SerializedXml.LoadXml($RawXml.OuterXml)
$Toast = [Windows.UI.Notifications.ToastNotification]::new($SerializedXml)
$Toast.Tag = "PowerShell"
$Toast.Group = "PowerShell"
$Toast.ExpirationTime = [DateTimeOffset]::Now.AddMinutes(1)
$Notifier = [Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier("Sysinfo")
$Notifier.Show($Toast);
}
function Find-RAM { #This finds the systems total physical memory and then returns this as a value in Gigabytes.
$cs = Get-CimInstance -ClassName win32_computersystem
$system_memory = $cs.totalphysicalmemory
$system_memory = $system_memory * 0.000000001 #Multiplies by 0.000000001 as the number give by CIM is in bytes.
$system_memory = [math]::floor($system_memory)
$system_memory = [String]$system_memory + " GB"
return $system_memory
}
function Find-Computer-Info {
$cs = Get-CimInstance -ClassName Win32_ComputerSystem
$bios_info = Get-CimInstance -ClassName CIM_BIOSElement
$cpu_info = Get-CimInstance -ClassName Win32_Processor
$gpu_info = Get-CimInstance -ClassName CIM_VideoController
$computer_os_info = Get-CimInstance -ClassName CIM_OperatingSystem
#Init array for storing computer's data
$computer_info = @("HOSTNAME:", $cs.Name,
"Domain:", $cs.Domain,
"OS Version:", $computer_os_info.Caption,
"OS Architecture:", $computer_os_info.OSArchitecture,
"Manufacture:", $cs.manufacturer,
"Model Name:", $cs.model,
"Serial Number:", $bios_info.SerialNumber,
"CPU Name:", $cpu_info.Name,
"CPU Type:", $cpu_info.Caption,
"GPU Name:", $gpu_info.Name)
return $computer_info
}
function Show-Computer-Info { # Function writes by default to stdout. If given a command line option it will write to a file.
if ($write_output.IsPresent){ #If this switch is present the script will write the output to a file. Otherwise it writes to stdout.
$computer_hostname = Get-CimInstance -ClassName Win32_ComputerSystem
$output_filename = "SystemProfile_" + $computer_hostname.Name + ".txt"
$output_path = ""
if ($file_location.IsPresent){
$output_path = "$file_path\$output_filename"
}else {
$output_path = $env:USERPROFILE + "\Desktop\" + $output_filename
}
foreach($line in $cs_info){
$line | Out-File -FilePath $output_path -Encoding utf8 -Append
Show-Notification("File is done writing.`nWriten to: $output_path")
}
}else {
foreach($line in $cs_info){
Write-Output $line
}
}
}
#Windows 7 Functions
function Find-Computer-Info_7 {
$cs_hostname = wmic computersystem get name
$cs_domain = wmic computersystem get Domain
$os_name = wmic os get Caption
$os_arch = wmic computersystem get SystemType
$cpu_name = wmic cpu get name
$cpu_type = wmic cpu get Caption
$cs_serial = wmic bios get serialnumber
$cs_manufacturer = wmic bios get Manufacturer
$cs_modelname = wmic csproduct get name
$gpu_name = wmic path win32_VideoController get name
$computer_info_7 = @(
"HOSTNAME:", $cs_hostname[2],
"Domain:", $cs_domain[2],
"OS Version:", $os_name[2],
"OS Architecture:", $os_arch[2],
"Manufacture:", $cs_manufacturer[2],
"Model Name:", $cs_modelname[2],
"Serial Number:", $cs_serial[2],
"CPU Name:", $cpu_name[2],
"CPU Type:", $cpu_type[2],
"GPU Type:", $gpu_name[2]
)
return $computer_info_7
}
function Find-RAM_7 {
[wmi]$cs = Get-WmiObject -Class win32_computersystem
$system_memory_7 = $cs.totalphysicalmemory / 1GB -as [int]
$system_memory_7 = $system_memory_7.ToString() + "GB"
return $system_memory_7
}
function Show-Computer-Info_7 {
if ($write_output.IsPresent){
$computer_hostname = wmic computersystem get name
$output_filename = "SystemProfile_" + $computer_hostname + ".txt"
$output_path = ""
if ($file_location.IsPresent){
$output_path = "$file_path\$output_filename"
}else {
$output_path = $env:USERPROFILE + "\Desktop\" + $output_filename
}
foreach($line in $cs_info_7){
$line | Out-File -FilePath $output_path -Encoding ASCII -Append
}
}else {
foreach($line in $cs_info_7){
Write-Output $line
}
}
}
$os_name = wmic os get Caption
if( $os_name[2] -like "Microsoft Windows 7*" ){
$cs_info_7 = Find-Computer-Info_7
$RAM_info_7 = Find-RAM_7
$cs_info_7 += ("RAM:", $RAM_info_7)
Show-Computer-Info_7
} else {
$cs_info = Find-Computer-Info
$RAM_info = Find-RAM
$cs_info += ("RAM:", $RAM_info)
Show-Computer-Info
}