Существует 4 случая, и большинство случаев не вызовет исключения System.OutOfMemoryExceptions. Когда вы имеете дело с Get-Content или Get-ChildItems, существует вероятность того, что вы прочтете столько данных, что скрипт выдаст исключение System.OutOfMemoryException. Но варианты 1 и 2 читают только определенные папки, ничего рекурсивного в них нет, поэтому вероятность возникновения исключения System.OutOfMemoryException менее вероятна.
вариант 4 также считывает процессы системы и сортирует их на основе ЦП. , Также не используется много памяти для генерации исключения.
Вариант 3 интересен, но тот факт, что он получает только счетчики и ничего не хранит, не может показаться, что это также приведет к возникновению какого-либо исключения system.OutOfMemoryException.
Я запустил все 4 сценария ios, и ни один из них не вызывает проблем с памятью.
Я бы порекомендовал включить весь оператор switch в блок try / catch с System.OutOfMemoryException, так как вы запускаете весь переключатель за некоторое время l oop. Это может быть любой из вариантов, которые могут вызвать ошибку.
try {
switch ( $input ) {
# Gets current date and time
1 {
$temp= Get-Date
$answer = Get-ChildItem | Where-Object { $_.Name -match "[A-Z,a-z,0-9]*[.][l]
[o][g]" }
echo $temp $answer
echo $temp $answer >> DailyLog.txt
}
# Lists files
2 {
$answer = Get-ChildItem | Sort-Object -Property name | select name
echo $answer
echo $answer >> C916contents.txt
}
# Lists current CPU processing percentage and memory usage
3 {
Get-Counter -Counter '\Process(_total)\% Processor Time' -MaxSamples 4 -SampleInterval 5
Get-Counter -Counter '\\desktop-l8dtt4r\physicaldisk(_total)\current disk queue length' -MaxSamples 4 -SampleInterval 5
}
# Gets current running procces on PC
4 {
Get-Process | Sort-Object -Property cpu
}
}
}
Catch [System.OutOfMemoryException] {
Write-Output "OutOfMemoryException occured."
}
Catch {
Write-OUtput "Something else happened: $($_.Exception.Message)"
}