ntfetch.ps1
<#
.SYNOPSIS Microsoft PowerShell - Script Utility 'NTFetch.ps1' .DESCRIPTION System Information Utility for Microsoft Windows. Based on Screenfetch from Linux. .NOTES PLANNED FEATURES: - Addition of multiple choices for Ascii Art Resources to display - Ability to use custom Ascii Art Resources - Cool Text Effects PLANNED UPDATES/FIXES: - Reduce size of OSLogo assets #> param( [ValidateSet('Eleven','ElevenClassic','ElevenClassicBordered','XP','Win95','WindowsTwelve','PoSh', 'Blocky')] [string]$OSLogo = 'ElevenClassic' ) # Eleven, ElevenClassic, ElevenClassicBordered, XP, Win95, WindowsTwelve, PoSh, Blocky #region Fetch System Information $Win32Info = Get-CimInstance Win32_OperatingSystem $Mobo = Get-CimInstance Win32_BaseBoard $VideoController = Get-CimInstance Win32_VideoController $LogicalDisk = Get-CimInstance Win32_LogicalDisk $Battery = Get-CimInstance Win32_Battery $UserInfo = $Env:USERNAME + "\" + [System.Net.Dns]::GetHostName() $OSInfo = $Win32Info.Caption + " " + $Win32Info.OSArchitecture $KernelInfo = $Win32Info.Version $Uptime = (([DateTime]$Win32Info.LocalDateTime) - ([datetime]$Win32Info.LastBootUpTime)); $UptimeFormat = $Uptime.Days.ToString() + ' Days ' + $Uptime.Hours.ToString() + ' Hours ' + $Uptime.Minutes.ToString() + ' Minutes ' + $Uptime.Seconds.ToString() + ' Seconds ' $UptimeInfo = $UptimeFormat $MotherboardInfo = $Mobo.Manufacturer + " " + $Mobo.Product $ShellInfo = "Microsoft PowerShell Version $($PSVersionTable.PSVersion.ToString())" $ResolutionInfo = $VideoController.CurrentHorizontalResolution.ToString() + " x " + $VideoController.CurrentVerticalResolution.ToString() + " (" + $VideoController.CurrentRefreshRate.ToString() + "Hz)" $CPUInfo = (Get-CimInstance CIM_Processor -Property Name).Name $GPUInfo = (Get-CimInstance Win32_DisplayConfiguration).DeviceName $AvailableRAM = ([math]::Truncate($Win32Info.FreePhysicalMemory/ 1KB)) $TotalRAM = ([math]::Truncate((Get-CimInstance Win32_ComputerSystem).TotalPhysicalMemory / 1MB)) $UsedRAM = $TotalRAM -$AvailableRAM $AvailableRAMPercent = ($AvailableRAM / $TotalRAM) * 100 $AvailableRAMPercent = "{0:N0}" -f $AvailableRAMPercent $UsedRamPercent = ($UsedRam / $TotalRAM) * 100 $UsedRamPercent = "{0:N0}" -f $UsedRamPercent $RAM = $UsedRAM.ToString() + "MB / " + $TotalRAM.ToString() + " MB " + "(" + $UsedRamPercent.ToString() + "%" + ")" $RAMInfo = $RAM $FormattedDisks = New-Object System.Collections.Generic.List[System.Object]; $NumDisks = $LogicalDisk.Count; if ($NumDisks) { for ($i=0; $i -lt ($NumDisks); $i++) { $DiskID = $LogicalDisk[$i].DeviceId; $DiskSize = $LogicalDisk[$i].Size; if ($DiskSize -gt 0) { $FreeDiskSize = $LogicalDisk[$i].FreeSpace $FreeDiskSizeGB = $FreeDiskSize / 1073741824; $FreeDiskSizeGB = "{0:N0}" -f $FreeDiskSizeGB; $DiskSizeGB = $DiskSize / 1073741824; $DiskSizeGB = "{0:N0}" -f $DiskSizeGB; if ($DiskSizeGB -gt 0 -And $FreeDiskSizeGB -gt 0) { $FreeDiskPercent = ($FreeDiskSizeGB / $DiskSizeGB) * 100; $FreeDiskPercent = "{0:N0}" -f $FreeDiskPercent; $UsedDiskSizeGB = $DiskSizeGB - $FreeDiskSizeGB; $UsedDiskPercent = ($UsedDiskSizeGB / $DiskSizeGB) * 100; $UsedDiskPercent = "{0:N0}" -f $UsedDiskPercent; } else { $FreeDiskPercent = 0; $UsedDiskSizeGB = 0; $UsedDiskPercent = 0; } } else { $DiskSizeGB = 0; $FreeDiskSizeGB = 0; $FreeDiskPercent = 0; $UsedDiskSizeGB = 0; $UsedDiskPercent = 100; } $FormattedDisk = "Disk " + $DiskID.ToString() + " " + $UsedDiskSizeGB.ToString() + "GB" + " / " + $DiskSizeGB.ToString() + "GB " + "(" + $UsedDiskPercent.ToString() + "%" + ")"; $FormattedDisks.Add($FormattedDisk); } } else { $DiskID = $LogicalDisk.DeviceId; $FreeDiskSize = $LogicalDisk.FreeSpace $FreeDiskSizeGB = $FreeDiskSize / 1073741824; $FreeDiskSizeGB = "{0:N0}" -f $FreeDiskSizeGB; $DiskSize = $LogicalDisk.Size; $DiskSizeGB = $DiskSize / 1073741824; $DiskSizeGB = "{0:N0}" -f $DiskSizeGB; if ($DiskSize -gt 0 -And $FreeDiskSize -gt 0 ) { $FreeDiskPercent = ($FreeDiskSizeGB / $DiskSizeGB) * 100; $FreeDiskPercent = "{0:N0}" -f $FreeDiskPercent; $UsedDiskSizeGB = $DiskSizeGB - $FreeDiskSizeGB; $UsedDiskPercent = ($UsedDiskSizeGB / $DiskSizeGB) * 100; $UsedDiskPercent = "{0:N0}" -f $UsedDiskPercent; $FormattedDisk = "Disk " + $DiskID.ToString() + " " + $UsedDiskSizeGB.ToString() + "GB" + " / " + $DiskSizeGB.ToString() + "GB " + "(" + $UsedDiskPercent.ToString() + "%" + ")"; $FormattedDisks.Add($FormattedDisk); } else { $FormattedDisk = "Disk " + $DiskID.ToString() + " Empty"; $FormattedDisks.Add($FormattedDisk); } } $DiskInfo = $FormattedDisks $BatteryLife = $Battery.EstimatedChargeRemaining.ToString() + "% Remaining" $BatteryInfo = $BatteryLife $Network = Get-NetConnectionProfile $WiFiInfo = $Network.InterfaceAlias + " Network: " + $Network.Name #endregion #region WinFetch Return $NGrn = "`e[38;5;49m" $LBlu = "`e[38;5;86m" $IRed = "`e[38;5;161m" $Red = "`e[38;5;9m" $Grn = "`e[38;5;42m" $Blu = "`e[38;5;39m" $Yel = "`e[38;5;227m" $Res = "`e[0m" [string[]] $Win11ModernColor = " $DBl████████████████████ ████████████████████$Res", " $DBl████████████████████ ████████████████████$Res", " $DBl████████████████████ ████████████████████$Res $IRed`User:$Res $UserInfo", " $DBl████████████████████ ████████████████████$Res $IRed`OS:$Res $OSInfo", " $DBl████████████████████ ████████████████████$Res $IRed`Kernel:$Res $KernelInfo", " $DBl████████████████████ ████████████████████$Res $IRed`System Uptime:$Res $UptimeInfo", " $DBl████████████████████ ████████████████████$Res $IRed`Motherboard:$Res $MotherboardInfo", " $DBl████████████████████ ████████████████████$Res $IRed`Shell:$Res $ShellInfo", " $DBl████████████████████ ████████████████████$Res $IRed`Resolution:$Res $ResolutionInfo", " ", " $DBl████████████████████ ████████████████████$Res $IRed`CPU:$Res $CPUInfo", " $DBl████████████████████ ████████████████████$Res $IRed`GPU:$Res $GPUInfo", " $DBl████████████████████ ████████████████████$Res $IRed`RAM:$Res $RAMInfo", " $DBl████████████████████ ████████████████████$Res $IRed`Disk C:\$Res $DiskInfo", " $DBl████████████████████ ████████████████████$Res", " $DBl████████████████████ ████████████████████$Res", " $DBl████████████████████ ████████████████████$Res $IRed`Battery:$Res $BatteryInfo", " $DBl████████████████████ ████████████████████$Res", " $DBl████████████████████ ████████████████████$Res", " ", " "; [string[]] $WindowsXP = " $Red ████████ $Res", " $Red ███████████████████ $Res", " $Red ████████████████████ $Res", " $Red █████████████████████$Grn ██ $Res", " $Red ██████████████████████$Grn █████ ███ $Res", " $Red █████████████████████$Grn ██████████████████████ $Res", " $Red ██████████████████████$Grn █████████████████████ $Res $IRed`User:$Res $UserInfo", " $Red █████████████████████$Grn █████████████████████ $Res $IRed`OS:$Res $OSInfo", " $Red █████████████████████$Grn █████████████████████ $Res $IRed", " $Red █████████████████████$Grn ██████████████████████ $Res $IRed`Kernel:$Res $KernelInfo", " $Red ████████ █████████$Grn █████████████████████ $Res $IRed`System Uptime:$Res $UptimeInfo", " $Red █ ████$Grn ██████████████████████ $Res", " $Blu ██████████████ $Grn █████████████████████ $Res $IRed`Motherboard:$Res $MotherboardInfo", " $Blu ████████████████████ $Grn ████████████████████ $Res $IRed`Shell:$Res $ShellInfo", " $Blu █████████████████████ $Grn ███████████████ $Res", " $Blu ██████████████████████$Yel ████ $Res $IRed`Resolution:$Res $ResolutionInfo", " $Blu █████████████████████$Yel █████████ ███████ $Res $IRed`CPU:$Res $CPUInfo", " $Blu ██████████████████████$Yel ██████████████████████ $Res $IRed`GPU:$Res $GPUInfo", " $Blu █████████████████████ $Yel █████████████████████ $Res $IRed`RAM:$Res $RAMInfo", " $Blu █████████████████████$Yel █████████████████████ $Res", " $Blu █████████████████████$Yel ██████████████████████ $Res $IRed`Disk C:\$Res $DiskInfo", " $Blu ██████████████████████$Yel █████████████████████ $Res", " $Blu ████ ██████ $Yel ██████████████████████ $Res $IRed`Battery:$Res $BatteryInfo", " $Blu ███$Yel █████████████████████ $Res", " $Yel █████████████████████ $Res", " $Yel ██████████████████ $Res", " $Yel ████████ $Res", " ", " "; [string[]] $Windows95 = " $Wht %%@ ", " @%% ", " ** %% ", " ** %%%%% ", " *** %%%@%%%%% ", " *** %%%%@%%%%%@%%%%%%%%%%%%%%%% ", " ** **** **** %%%%%%%%%%%%%%%%%%%%%%%%%%%%% ", " *** ***********@%%%%% %%%%%%%%%%%%%%%%%%%% ", " %%% **************** %%%%%%$Red*********$Res$Wht#%%%%%%%%%%%%% ", " %%% **** ***********%%%%%%$Red**********$Res$Wht#%%*$Grn**$Res$Wht#%%%%%%%%% ", " * %%@ ***********@%%%%@ $Red*********$Res$Wht#%%#$Grn******$Res$Wht#%%%%%%% ", " ** %%%%@ **********%%%%%% $Red**********$Res$Wht%%%$Grn*********$Res$Wht%%%%%%@ ", " *** %%%%@%%%% *****#%%%%%%$Red**********$Res$Wht%%%$Grn*********$Res$Wht*%%%%%% ", " *** ** %%%% %%%%%@%%%%%%$Red**********$Res$Wht%%%+$Grn********$Res$Wht*%%%%%% ", " ** **** %%%%%%%%%%%% %%%%%%%%%%%%*$Grn*********$Res$Wht%%%%%% ", " *** **********%%%%%% %%%%%@****###%%%%%%%%*$Grn******$Res$Wht%%%%%%@ ", " %%@ *** *********** %%%%%%$Blu**********$Res$Wht%%%+#%%%%*$Grn**$Res$Wht%%%%%%% ", " @@ **** ***********%%%%%%$Blu**********$Res$Wht%%%=$Yel****$Res$Wht*%%%%%%%%%% ", " %%@ ***********%%%%%% $Blu*********$Res$Wht#%%*$Yel*******$Res$Wht=%%%%%%% ", " @%%% ***********%%%%%% $Blu**********$Res$Wht%%#$Yel********$Res$Wht=%%%%%% ", " %%%% %%%% ******%%%%%%$Blu**********$Res$Wht%%%$Yel*********$Res$Wht%%%%%%% ", " %%%%%%%%%%@@@@@@ #####$Blu*****$Res$Wht%%%$Yel*********$Res$Wht%%%%%%% $Res$Ired`Battery:$Res $BatteryInfo", " %%%%%%%%%%%% %%%%%%%%%%%%#=$Yel*******$Res$Wht*%%%%%% ", " %%%%%%@%%%%% %%%%%%%%%%%%%%%%%#=$Yel**$Res$Wht=%%%%%% ", " %%%%%%%%%%%#%%%%%% ", " @%%%%%%%%%%%%@ ", " %%%%%%%%%% ", " %%%%%% ", " %%%% ", " % $Res ", " ", " "; [string[]]$WindowsBordered = " ", " ", " ██████████████████████████████████████████████████████████████", " ██████████████████████████████████████████████████████████████ $NGrn [System Information] $Res", " ██████████████████████████████████████████████████████████████", " ██████ ██████ $IRed`User:$Res $UserInfo", " ██████ ██████ $IRed`OS:$Res $OSInfo", " ██████ $Red██████████████████$Res $Grn██████████████████$Res ██████ $IRed`Kernel:$Res $KernelInfo", " ██████ $Red██████████████████$Res $Grn██████████████████$Res ██████ $IRed`SystemUptime:$Res $UptimeInfo", " ██████ $Red██████████████████$Res $Grn██████████████████$Res ██████ $IRed`Motherboard:$Res $MotherboardInfo", " ██████ $Red██████████████████$Res $Grn██████████████████$Res ██████ $IRed`Shell:$Res $ShellInfo", " ██████ $Red██████████████████$Res $Grn██████████████████$Res ██████", " ██████ $Red██████████████████$Res $Grn██████████████████$Res ██████ $IRed`Resolution:$Res $ResolutionInfo", " ██████ $Red██████████████████$Res $Grn██████████████████$Res ██████ $IRed`CPU:$Res $CPUInfo", " ██████ $Red██████████████████$Res $Grn██████████████████$Res ██████ $IRed`GPU:$Res $GPUInfo", " ██████ ██████ $IRed`RAM:$Res $RAMInfo", " ██████ $Blu██████████████████$Res $Yel██████████████████$Res ██████", " ██████ $Blu██████████████████$Res $Yel██████████████████$Res ██████ $IRed`Drive:$Res $DiskInfo", " ██████ $Blu██████████████████$Res $Yel██████████████████$Res ██████ $IRed`Network:$Res $WifiInfo", " ██████ $Blu██████████████████$Res $Yel██████████████████$Res ██████", " ██████ $Blu██████████████████$Res $Yel██████████████████$Res ██████ $IRed`Battery:$Res $BatteryInfo", " ██████ $Blu██████████████████$Res $Yel██████████████████$Res ██████", " ██████ $Blu██████████████████$Res $Yel██████████████████$Res ██████", " ██████ $Blu██████████████████$Res $Yel██████████████████$Res ██████", " ██████ ██████", " ██████ ██████", " ██████████████████████████████████████████████████████████████", " ██████████████████████████████████████████████████████████████", " ██████████████████████████████████████████████████████████████", " ", " "; [string[]]$Windows12 " ", " ", " ███████████████████████ █████████████████████████ ", " █████████████████████████ █████████████████████████ ", " ██████████████████████████ █████████████████████████ ", " ██████████████████████████ █████████████████████████ ", " ██████████████████████████ █████████████████████████ ", " ██████████████████████████ █████████████████████████ ", " ██████████████████████████ █████████████████████████ ", " ██████████████████████████ █████████████████████████ ", " ██████████████████████████ █████████████████████████ ", " ██████████████████████████ █████████████████████████ ", " ██████████████████████████ █████████████████████████ ", " ██████████████████████████ █████████████████████████ ", " ██████████████████████████ █████████████████████████ ", " ", " ██████████████████████████ █████████████████████████ ", " ██████████████████████████ █████████████████████████ ", " ██████████████████████████ █████████████████████████ ", " ██████████████████████████ █████████████████████████ ", " ██████████████████████████ █████████████████████████ ", " ██████████████████████████ █████████████████████████ ", " ██████████████████████████ █████████████████████████ ", " ██████████████████████████ █████████████████████████ ", " ██████████████████████████ █████████████████████████ ", " ██████████████████████████ █████████████████████████ ", " ██████████████████████████ █████████████████████████ ", " ██████████████████████████ ████████████████████████ ", " ██████████████████████████ ██████████████████████ ", " ", " "; [string[]]$WindowsBlocky = " ", " ", " $Red████████████ █████████████████$Grn ███████████████████████ ", " $Red████████████ █████████████████$Grn █████████████████████████████ ", " $Red████████████ █████████████████$Grn ███████████████████████████████ ", " $Red████████████ █████████████████$Grn ███████████████████████████████ ", " $Red██████ ██████$Grn ██████ ██████ ", " $Red██████ ██████$Grn ██████ ██████ ", " $Red██████ ██████$Grn ██████ ██████ ", " $Red██████ ██████$Grn ██████ ██████ ", " $Red██████ ██████$Grn ██████ ██████ ", " $Red██████ ██████$Grn ██████ ██████ ", " $Red██████ ██████$Grn ██████ ██████ ", " $Red██████ ██████$Grn ██████ ██████ ", " $Red██████ ██████$Grn ██████ ██████ ", " $Red██████ ██████$Grn ██████ ██████ ", " $Red█████████████████ ███████████$Grn ███████████████████████████████ ", " $Red█████████████████ ███████████$Grn ███████████████████████████████ ", " $Red ████████████████ ██████████ $Grn ████████████████████████████ ", " ", " ", " $Blu████████████████████████████ $Yel███████████ ████████████████ ", " $Blu███████████████████████████████ $Yel████████████ █████████████████ ", " $Blu███████████████████████████████ $Yel████████████ █████████████████ ", " $Blu██████ ██████ $Yel██████ ██████ ", " $Blu██████ ██████ $Yel██████ ██████ ", " $Blu██████ ██████ $Yel██████ ██████ ", " $Blu██████ ██████ $Yel██████ ██████ ", " $Blu██████ ██████ $Yel██████ ██████ ", " $Blu██████ ██████ $Yel██████ ██████ ", " $Blu██████ ██████ $Yel██████ ██████ ", " $Blu██████ ██████ $Yel██████ ██████ ", " $Blu██████ ██████ $Yel██████ ██████ ", " $Blu██████ ██████ $Yel██████ ██████ ", " $Blu███████████████████████████████ $Yel█████████████████ ███████████ ", " $Blu███████████████████████████████ $Yel█████████████████ ███████████ ", " $Blu█████████████████████████████ $Yel████████████████ ██████████ ", " $Blu███████████████████████ $Yel██████████████ ████████$Res ", " ", " ", " "; [string[]]$Win11ClassicColor = " ", " [System Information]", " $Red████████████ $Grn████████████ $IRed User:$Res $UserInfo", " $Red████████████ $Grn████████████ $IRed OS:$Res $OSInfo", " $Red████████████ $Grn████████████ $IRed Kernel:$Res $KernelInfo", " $Red████████████ $Grn████████████ $IRed System Uptime:$Res $UptimeInfo", " $Red████████████ $Grn████████████ $IRed Motherboard:$Res $MotherboardInfo", " $Red████████████ $Grn████████████ $IRed Shell:$Res $ShellInfo", " $Red▔▔▔▔▔▔▔▔▔▔▔▔ $Grn▔▔▔▔▔▔▔▔▔▔▔▔ $IRed Resolution:$Res $ResolutionInfo", " $Blu████████████ $Yel████████████ $IRed CPU:$Res $CPUInfo", " $Blu████████████ $Yel████████████ $IRed GPU:$Res $GPUInfo", " $Blu████████████ $Yel████████████ $IRed RAM:$Res $RAMInfo", " $Blu████████████ $Yel████████████ $IRed Drive:$Res $DiskInfo", " $Blu████████████ $Yel████████████ $IRed Network:$Res $WifiInfo", " $Blu████████████ $Yel████████████ $IRed Battery:$Res $BatteryInfo", " $Blu▔▔▔▔▔▔▔▔▔▔▔▔ $Yel▔▔▔▔▔▔▔▔▔▔▔▔$Res", " ", " "; <# ██████████████████████████████████ ██ ██ ██ ████████████ ████████████ ██ ██ ████████████ ████████████ ██ ██ ████████████ ████████████ ██ ██ ████████████ ████████████ ██ ██ ████████████ ████████████ ██ ██ ████████████ ████████████ ██ ██ ▔▔▔▔▔▔▔▔▔▔▔▔ ▔▔▔▔▔▔▔▔▔▔▔▔ ██ ██ ████████████ ████████████ ██ ██ ████████████ ████████████ ██ ██ ████████████ ████████████ ██ ██ ████████████ ████████████ ██ ██ ████████████ ████████████ ██ ██ ████████████ ████████████ ██ ██ ▔▔▔▔▔▔▔▔▔▔▔▔ ▔▔▔▔▔▔▔▔▔▔▔▔ ██ ██████████████████████████████████ <# [string[]]$PowerShell " ", " ", " ██████████████████████████████████████████████████████████████ ", " ██████████████████████████████████████████████████████████████████ ", " ████ ████ ", " ████ ███ ", " ████ ████ ████ ", " ███ ████████ ████ ", " ████ ██████████ ███ ", " ███ ███████████ ████ ", " ████ ███████████ ███ ", " ███ ███████████ ████ ", " ████ ███████████ ███ ", " ███ ███████████ ████ ", " ████ ███████████ ████ ", " ████ ███████████ ████ ", " ███ ███████████ ████ ", " ████ ██████████ ███ ", " ███ ███████████ ████ ", " ████ ████████████ ████ ", " ████ ███████████ ███ ", " ████ ████████████ ████ ", " ████ ███████████ ███ ", " ███ ████████████ ████ ", " ████ ███████████ ███ ", " ███ ████████████ ████████████████ ████ ", " ████ ███████████ ████████████████████ ████ ", " ████ ███████████ ████████████████████ ████ ", " ███ ████████ ███████████████████ ████ ", " ████ ███ ███ ", " ███ ████ ", " ████ ████ ", " █████████████████████████████████████████████████████████████████ ", " ██████████████████████████████████████████████████████████████ ", " ", " "; #> # Eleven, ElevenClassic, ElevenClassicBordered, XP, Win95, WindowsTwelve, PoSh if ($OSLogo -eq 'ELeven') { $Artwork = $Win11ModernColor } elseif ($OSLogo -eq 'ElevenClassic') { $Artwork = $Win11ClassicColor } elseif ($OSLogo -eq 'XP') { $Artwork = $WindowsXP } elseif ($OSLogo -eq 'Win95') { $Artwork = $Windows95 } elseif ($OSLogo -eq 'ElevenClassicBordered') { $Artwork = $WindowsBordered } elseif ($OSLogo -eq 'WindowsTwelve') { $Artwork = $Windows12 } elseif ($OSLogo -eq 'PoSh') { $Artwork = $PowerShell } elseif ($OSLogo -eq 'Blocky') { $Artwork = $WindowsBlocky } $ArtArray = $Artwork $BrandingBuffer = " " * 34 Clear-Host Write-Host "" Write-Host $BrandingBuffer -NoNewline Write-Host "$LBlu`[NTFetch | Version 0.45.0]$Res" Return $ArtArray #endregion |