Functions/free.ps1
|
# Functions\free.ps1 function free { param() # 1. i18n $lang = $PSCulture $t = if ($lang -eq "zh-CN") { @{ label = "内存状态"; total = "总计"; used = "已用"; free = "可用" } } else { @{ label = "Memory Usage"; total = "Total"; used = "Used"; free = "Free" } } # 2. Get Data via CIM/WMI $os = Get-CimInstance Win32_OperatingSystem # Physical Memory $totalMem = $os.TotalVisibleMemorySize * 1KB $freeMem = $os.FreePhysicalMemory * 1KB $usedMem = $totalMem - $freeMem $percent = [Math]::Round(($usedMem / $totalMem) * 100, 1) # Commit / PageFile (Approximate Swap in Windows) $totalCommit = $os.SizeStoredInPagingFiles * 1KB + $totalMem $freeCommit = $os.FreeSpaceInPagingFiles * 1KB + $freeMem $usedCommit = $totalCommit - $freeCommit # 4. Progress Bar $barWidth = 30 $filled = [int][Math]::Floor($percent / (100 / $barWidth)) $barStr = ("█" * $filled) + (" " * ($barWidth - $filled)) # 5. Output Visualization Write-Host "" Write-Host " $(ColorCyan)$($t.label) (RAM):$(ColorReset)" Write-Host " [$(ColorGreen)$barStr$(ColorReset)] $percent%" Write-Host "" # 6. Output Table (CoolCMD Style) $format = " $(ColorRed){0,-10} $(ColorOrange){1,10} $(ColorYellow){2,10} $(ColorGreen){3,10}$(ColorReset)" Write-Host ($format -f "Type", "Total", "Used", "Free") Write-Host (" $(ColorGray)" + ("-" * 50) + "$(ColorReset)") Write-Host ($format -f "Mem", (Format-CoolSize $totalMem), (Format-CoolSize $usedMem), (Format-CoolSize $freeMem)) Write-Host ($format -f "Commit", (Format-CoolSize $totalCommit), (Format-CoolSize $usedCommit), (Format-CoolSize $freeCommit)) Write-Host "" } |