0
我正在處理腳本以監視PowerShell中的一些性能問題。以下是我想要做的事情的概述。在powershell中重新啓動循環
- 檢查每個提交的字節在使用每60秒
- 如果低於60%,記錄和睡覺
- 如果高於60%,登錄過程消耗大量的分頁存儲器,警報,並返回到步驟1
我希望這個運行無限(一旦直到部分完成重新開始),但我有困難包裝我的大腦周圍的一些循環概念。從我讀過的內容中,我可以使用break
或continue
,但我不確定最有效的方法是什麼。
這是我正在使用的代碼的一部分。如果它很重要,我使用一個用於日誌記錄功能的函數,並將它作爲一個Job運行,以便它在後臺運行。
Add-Type -AssemblyName System.Windows.Forms
Do{
$value = (Get-Counter -Counter "\Memory\% committed bytes in use").CounterSamples.CookedValue
LogOnly -Text "Committed bytes in use is currently $($value)"
Start-Sleep -Seconds 60
}
Until($value -gt 60)
LogOnly -Text "Commited bytes in use is currently $($value)."
$Processes = Get-Process | Where {$_.PM -gt 500MB} | ForEach {LogOnly -Text "Processes above 300MB is $($_.ProcessName)"}
[System.Windows.Forms.MessageBox]::Show("Committed Memory % has increased to $value.", 'Memory Warning', '0', 'Warning')
感謝
是的,我試過類似的東西和它的作品,如果該值小於60,但我還需要登錄,並採取其他行動因爲當它在60以上時,我無法讓它工作。我嘗試過使用'Else {做其他的事情}',但它只是掛起,從不運行那部分。 – YEMyslf
查看更新的答案。如果'$ value'大於或等於60,'else'子句將會運行。 –
是的,這是我的,但else子句沒有運行。這是我正在嘗試的簡化版本。 'While($ True){Value =(Get-Counter-Counter「\ Memory \%committed in use」)。CounterSamples.CookedValue If($ value -lt 60)Write-Host「Committed Byte在當前使用的數量是有限制的,當前值爲$($ value)「} } Else { Write-Host」正在使用的已使用超出限制值,當前值爲$($ value)。「 }' – YEMyslf