Я искренне сомневаюсь, что есть особенно простой способ выполнить то, что вы просите. Если проблема с процессором имеет большое значение, я бы объединил пару тактик и позволил бы планировщику позаботиться обо всем остальном - на самом деле он довольно хорош в управлении нагрузкой.
Предложение использования ThreadPriority немного проблематично, поскольку PowerShell порождает каждую новую команду в новом потоке, что можно обойти, поместив все в одну строку, командлет или какую-либо функцию. Лучше отправить весь процесс powershell в режим ожидания:
Get-Process -name powershell | foreach { $_.PriorityClass = "Idle" }
Примечание: это отправит ВСЕ экземпляры powershell в режим ожидания, что может не дать желаемого эффекта. И, конечно же, не мешает сценарию повысить свой собственный приоритет.
Кроме того, как уже упоминалось, засорение вашего кода командами сна может быть эффективным способом обеспечения достаточного времени ЦП для обработки своего кода. Даже 50-100 мс - это почти вечность для процессора.
[System.Threading.Thread]::Sleep(50)
Между этими двумя тактиками ваш сценарий будет запускаться, когда он станет доступен, и милостиво подчиняться другим требованиям ЦП по мере их возникновения.