Powershell is now working.

The powershell version is now functional. The .bat version has been
updated to include RAM output as well.
This commit is contained in:
efrick 2021-04-20 10:08:24 -04:00
parent bdaf99c174
commit e1429781c1
3 changed files with 109 additions and 47 deletions

View File

@ -4,8 +4,8 @@ A script to output to output basic system information.
## Usage ## Usage
1. Download the `.bat` file. 1. Download the `.ps1` file.
2. Run from `CMD` with `C:\Path\to\sysinfo.bat` 2. Run from `CMD` with `C:\Path\to\sysinfo.ps1`
## Features ## Features
@ -13,17 +13,22 @@ It currently outputs:
* The Hostname * The Hostname
* The CPU name * The CPU name
* The CPU Architecture
* The OS Version * The OS Version
* The OS Architecture
* The System's Manufacturer
* The System's Model name
* The system's serial number * The system's serial number
* The model name of the system * The GPU model name
* The amount of system RAM
## Quick Run ## Quick Run
Copy and past into `CMD` Copy and past into `CMD`
``` ```
curl https://efrick.ddns.net/git/efrick/Sysinfo/raw/branch/master/sysinfo.bat > %userprofile%\AppData\Local\Temp\temp.bat curl https://efrick.ddns.net/git/efrick/Sysinfo/raw/branch/master/sysinfo.bat > %userprofile%\AppData\Local\Temp\sysinfo.ps1
%userprofile%\AppData\Local\Temp\temp.bat %userprofile%\AppData\Local\Temp\sysinfo.ps1
``` ```
@ -35,4 +40,6 @@ Uses `echo` and `wmic`.
## `sysinfo.ps1` ## `sysinfo.ps1`
This is currently under development. Don't use it. This is now the recommended file to use.
It will require the ability to run Powershell Scripts which is restricted by default.

View File

@ -11,3 +11,5 @@ echo System Serial Number
wmic bios get serialnumber wmic bios get serialnumber
echo System Model Name echo System Model Name
wmic csproduct get name wmic csproduct get name
echo System RAM
systeminfo.exe | findstr /C:"Total Physical Memory"

View File

@ -1,43 +1,96 @@
#sysinfo.ps1 #sysinfo.ps1
#Inumerate a systems processor, serial number, modle number, and ammount of RAM. #Inumerate a systems processor, serial number, modle number, and ammount of RAM.
echo "Hostname"
wmic computersystem get name
echo "CPU name"
wmic cpu get name
echo "OS Type"
wmic os get Caption
echo "System Serial Number"
wmic bios get serialnumber
echo "System Model Name"
wmic csproduct get name
# wmic computersystem get name; wmic cpu get name; wmic os get Caption;wmic bios get serialnumber; wmic csproduct get name
#Get-ServerInformation.ps1 param(
#------------------- [switch]$write_output,
#$serversOuPath = 'OU=Servers,DC=powerlab,DC=local' [switch]$file_location,
#$servers = Get-ADComputer -SearchBase $serversOuPath -Filter * | [string]$file_path
#Select-Object -ExpandProperty Name )
#foreach ($server in $servers) {
# $output = @{ function Show-Notification { #Shows a notification in the system notification tray.
# 'ServerName' = $null param (
# 'IPAddress' = $null [string]
# 'OperatingSystem' = $null $ToastTitle,
# 'AvailableDriveSpace (GB)' = $null [string]
# 'Memory (GB)' = $null $ToastText
# 'UserProfilesSize (MB)' = $null )
# 'StoppedServices' = $null
# } [Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType = WindowsRuntime] > $null
# $getCimInstParams = @{ $Template = [Windows.UI.Notifications.ToastNotificationManager]::GetTemplateContent([Windows.UI.Notifications.ToastTemplateType]::ToastText02)
# CimSession = New-CimSession -ComputerName $server $RawXML = [xml] $Template.GetXML()
# } ($RawXML.toast.visual.binding.text|Where-Object {$_.id -eq "1"}).AppendChild($RawXml.CreateTextNode($ToastTitle)) > $null
# $output.ServerName = $server ($RawXml.toast.visual.binding.text|Where-Object {$_.id -eq "2"}).AppendChild($RawXml.CreateTextNode($ToastText)) > $null
# $output.'UserProfilesSize (MB)' = (Get-ChildItem -Path "\\$server\c$\
# Users\" -File | Measure-Object -Property Length -Sum).Sum $SerializedXml = New-Object Windows.Data.Xml.Dom.XmlDocument
# $output.'AvailableDriveSpace (GB)' = [Math]::Round(((Get-CimInstance @getCimInstParams -ClassName Win32_LogicalDisk).FreeSpace / 1GB),1) $SerializedXml.LoadXml($RawXml.OuterXml)
# $output.'OperatingSystem' = (Get-CimInstance @getCimInstParams -ClassName Win32_OperatingSystem).Caption
# $output.'Memory (GB)' = (Get-CimInstance @getCimInstParams -ClassName Win32_PhysicalMemory | Measure-Object -Property Capacity -Sum).Sum /1GB $Toast = [Windows.UI.Notifications.ToastNotification]::new($SerializedXml)
# $output.'IPAddress' = (Get-CimInstance @getCimInstParams -ClassName Win32_NetworkAdapterConfiguration -Filter "IPEnabled = 'True'").IPAddress[0] $Toast.Tag = "PowerShell"
# $output.StoppedServices = (Get-Service -ComputerName $server | Where-Object { $_.Status -eq 'Stopped' }).DisplayName $Toast.Group = "PowerShell"
# Remove-CimSession -CimSession $getCimInstParams.CimSession $Toast.ExpirationTime = [DateTimeOffset]::Now.AddMinutes(1)
# [pscustomobject]$output
#} $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,
"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
}
}
}
$cs_info = Find-Computer-Info
$RAM_info = Find-RAM
$cs_info += ("RAM:", $RAM_info)
Show-Computer-Info