У меня есть что-то вроде решения для развертывания.Я устанавливаю некоторый программный пакет в последовательности, делаю перезагрузку, устанавливаю еще несколько программных пакетов и так далее ...
Я заметил, что после такой последовательности установки система работает над некоторыми задачами,Например, после установки Антивируса Symantec компьютер загружается на несколько минут.Может быть, он делает первое сканирование или что-то в этом роде.Я не знаю.Автоматическая последовательность вызывает перезагрузку.Иногда я вижу, как система зависает в окне выхода из системы, заставляя завершать задачи ...
Для лучшей наглядности смотрите скриншот примера CPU-графика: График производительности
- Последовательность установки
- Установка завершена.Компьютер не используется в течение нескольких секунд
- Рабочая нагрузка в течение нескольких минут
(*) Извините, график не является подлинным.Просто для наглядности.
Я ищу решение PowerShell для обнаружения простоя.После установки последнего программного пакета я хочу запустить его, и он должен подождать, пока компьютер не будет готов.
Он должен быть динамическим - я не хочу использовать такие вещи, как ...
Start-Sleep -Seconds 300
... и надеюсь, что задачи завершены.
Это не должно зависеть от имени процесса или чего-то подобного.
РЕДАКТИРОВАТЬ # 1:
На основании ваших комментариев я создал следующий код в качестве первого теста:
$Start = Get-Date
do {
$LoadPercentage = Get-Counter -Counter "\prozessor(_total)\prozessorzeit (%)" -SampleInterval 1 -MaxSamples 5 | Select-Object -ExpandProperty CounterSamples | Group-Object -Property InstanceName | `
ForEach-Object {
$_ | Select-Object -Property @{ n='Average'; e={ [math]::Round( ( $_.Group.CookedValue | Measure-Object -Average ).Average, 1 ) } };
} | Select-Object -ExpandProperty Average
$LoadPercentage
} until ( ( $LoadPercentage -lt 15 ) -or ( ( Get-Date ) -gt $Start.AddMinutes(1) ) )
- Мне не нравится, что командлет "Get-Counter"не нейтральный к культуре, и я не хочу использовать много кода, чтобы обойти это.(например, this )
- Является ли счетчик " \ Processor (_Total) \% Processor Time " лучшим для этого сценария?
- Буду ли яполучить этот счетчик также с помощью «Get-CimInstance»?
- Должны ли системы с несколькими ядрами процессора (например, 16 ядер) обрабатываться по-разному?
- Есть ли улучшения по моему запросу?
Спасибо