Write-EventLog
записывает в журнал событий Windows .Я бы запустил код, который создает источник журнала вне блока $peridiocallyChecks
, который запускается с запланированной задачей.Вам нужны права администратора для создания источника журнала, и может случиться так, что он завершится с ошибкой во время запланированной задачи, и вы не получите никаких журналов / остальная часть блока скрипта не запускается.
Итак, сначала сделайте так, чтобы регистрация работала вне запланированной задачи, и создайте настраиваемое представление в средстве просмотра событий, чтобы вы могли выполнить Write-EventLog
в интерактивном режиме, обновить представление и просмотреть сообщение журнала..
После того, как вы сможете просмотреть журналы без сложностей с запланированной задачей поверх них, начните работать со сценарием, чтобы найти, какая область не запущена.При необходимости добавьте больше вызовов Write-EventLog
, чтобы сузить то, что вызывается, а что нет.
Get-EventLog -Source "CPU supervision" -LogName Application
является избыточным.Это покажет вам сообщения журнала событий, но при запуске в запланированном задании вы ничего не увидите.
Я также использую функцию выборки Get-Counter
для вычисления среднего значения по несколькимсекунд.Этот способ дает вам лучшее представление о фактической нагрузке, потому что одно наблюдение может быть ниже, чем вы ожидаете, даже если система находится под нагрузкой.
$i = 0
$runTotal = 0.0;
$counters = Get-Counter -Counter "\Processor(_Total)\% Processor Time" -SampleInterval 3 -MaxSamples 5 | Select-Object -ExpandProperty CounterSamples | Select-Object -ExpandProperty CookedValue
$counters | foreach { $runTotal = $_ + $runTotal; $i ++}
#Raw Counter
$counters
# Mean value over 3 seconds will give you a better estimate
$runTotal/ $i