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:
2021-04-20 10:08:24 -04:00
parent bdaf99c174
commit e1429781c1
3 changed files with 109 additions and 47 deletions

View File

@@ -1,43 +1,96 @@
#sysinfo.ps1
#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
#-------------------
#$serversOuPath = 'OU=Servers,DC=powerlab,DC=local'
#$servers = Get-ADComputer -SearchBase $serversOuPath -Filter * |
#Select-Object -ExpandProperty Name
#foreach ($server in $servers) {
# $output = @{
# 'ServerName' = $null
# 'IPAddress' = $null
# 'OperatingSystem' = $null
# 'AvailableDriveSpace (GB)' = $null
# 'Memory (GB)' = $null
# 'UserProfilesSize (MB)' = $null
# 'StoppedServices' = $null
# }
# $getCimInstParams = @{
# CimSession = New-CimSession -ComputerName $server
# }
# $output.ServerName = $server
# $output.'UserProfilesSize (MB)' = (Get-ChildItem -Path "\\$server\c$\
# Users\" -File | Measure-Object -Property Length -Sum).Sum
# $output.'AvailableDriveSpace (GB)' = [Math]::Round(((Get-CimInstance @getCimInstParams -ClassName Win32_LogicalDisk).FreeSpace / 1GB),1)
# $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
# $output.'IPAddress' = (Get-CimInstance @getCimInstParams -ClassName Win32_NetworkAdapterConfiguration -Filter "IPEnabled = 'True'").IPAddress[0]
# $output.StoppedServices = (Get-Service -ComputerName $server | Where-Object { $_.Status -eq 'Stopped' }).DisplayName
# Remove-CimSession -CimSession $getCimInstParams.CimSession
# [pscustomobject]$output
#}
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,
"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