我正在研究 Windows 運行狀況檢查腳本,如果任何步驟超出閾值,它將在輸出日志中寫入失敗/警告,如下所示。
[ OScheck ] : [ INFO ] : Windows 10 Enterprise
[ UpTime ] : [ GOOD ] : Server is up for 1 Days
[ Hardware ] : [ INFO ] : Its a Physical server.
[ CPU ] : [ GOOD ] : Server CPU utilization 2.74%
[ MEMORY ] : [ WARN ] : Server MEMORY utilization 82.75%
一旦閾值 MEMORY 82.75% 被破壞,我想按以下格式列印最后 5 個高記憶體利用率行程。
[ MEMORY ] : [ WARN ] : Server MEMORY utilization 82.75%
[ MEMORY ] : [ INFO ] : Top 5 high memory utilization process%
Count Name Memoryusage(Total)
----- ---- ------------------
1 Memory Compression 398.582MB
20 chrome 1,615.891MB
9 Teams 990.699MB
1 OUTLOOK 241.316MB
1 MsMpEng 194.027MB
但目前我正在列印如下輸出。
[ MEMORY ] : [ WARN ] : Server MEMORY utilization 82.75%
[ MEMORY ] : [ INFO ] : Top 5 high memory utilization process
Count Name Memoryusage(Total)
----- ---- ------------------
1 Memory Compression 398.582MB
20 chrome 1,615.891MB
9 Teams 990.699MB
1 OUTLOOK 241.316MB
1 MsMpEng 194.027MB
有沒有辦法進行這種格式化?下面是我正在運行的代碼。
Function Get-Memory{
$CompObject = Get-CIMInstance -Class WIN32_OperatingSystem
$Memory = ((($CompObject.TotalVisibleMemorySize - $CompObject.FreePhysicalMemory)*100)/ $CompObject.TotalVisibleMemorySize)
$Memory | % {$_.ToString("#.##")}
}
$highMemUsage = Get-Process | Sort-Object -Property ws -Descending | Group-Object -Property ProcessName | Select-Object -first 5 Count, Name, @{Name='Memoryusage(Total)';Expression={'{0:N3}MB' -f (($_.Group | Measure-Object WorkingSet -Sum).Sum / 1MB)}} | out-string
$ram = Get-Memory
if ($ram -ge 90)
{
"[ MEMORY ] : [ FAIL ] : Server MEMORY utilization $($ram)%"
"[ MEMORY ] : [ INFO ] : Top 5 high memory utilization process $($highMemUsage)"
} elseif($ram -gt 80 -And $ram -le 90) {
"[ MEMORY ] : [ WARN ] : Server MEMORY utilization $($ram)%"
"[ MEMORY ] : [ INFO ] : Top 5 high memory utilization process $($highMemUsage)"
} elseif($ram -le 80){
"[ MEMORY ] : [ GOOD ] : Server MEMORY utilization $($ram)%"
}
uj5u.com熱心網友回復:
Out-String與開關一起使用以逐一-Stream回傳構成格式化表示的行(沒有,將回傳單個多行字串)。-Stream使用(是匹配任何非空白字符的正則運算式)過濾掉空/全空白行。
-match'\S'\S使用字串連接 ( )為每個結果行添加必要數量的空格以獲得所需的對齊方式(
' ' * 33創建一個由 33 個空格組成的字串)。
Get-Process |
Sort-Object -Property ws -Descending |
Group-Object -Property ProcessName |
Select-Object -first 5 Count, Name, @{Name='Memoryusage(Total)';Expression={'{0:N3}MB' -f (($_.Group | Measure-Object WorkingSet -Sum).Sum / 1MB)}} |
Out-String -Stream |
ForEach-Object { if ($_ -match '\S') { ' ' * 33 $_ } }
在您的代碼背景關系中,使用以下內容,它會在前面添加一個換行符(...代表上面的管道):
$highMemUsage = [Environment]::NewLine (...)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/513260.html
標籤:电源外壳格式化
