Команды выполняются как статус печати задания с перерывами - PullRequest
0 голосов
/ 12 мая 2018

Когда я запускаю определенные команды (Invoke-Command или Start-Job) в качестве фоновых заданий, PowerShell иногда печатает состояние задания при запуске задания.

Например (упрощенная команда здесь):

Invoke-Command -ComputerName $my_ip -FilePath "my_script.ps1" -ArgumentList $param_1 -AsJob

Эта команда выводит на консоль весь файл my_script.ps1 вместе со стартовым статусом, например:

State          : Running
PSComputerName : 192.168.50.50
RunspaceId     : 0c83a64d-318e-43c8-9bdb-68893eeb96c9
HasMoreData    : True
StatusMessage  :
Location       : localhost
Command        : <i><whole contents of my_script.ps1 printed here></i>
JobStateInfo   : Running
<i>... <some more status info></i>

Я запускаю огромный набор скриптов и по какой-то причине меняюзначение $param_1 изменяет поведение печати между сводной информацией о начале задания печати (Format-Table -подобный вывод) и выводом, показанным выше.

Мне удалось только изменить способ вывода вывода (междудва варианта выше) путем изменения места, где объявлены параметры.

Это может быть ошибкой в ​​PowerShell, но я не уверен.Это приводит в бешенство, когда весь файл сценария печатается на консоли, и фактические отладочные отпечатки становятся трудными для обнаружения.

1 Ответ

0 голосов
/ 12 мая 2018

Запуск задания возвращает ссылку на объект задания, который вы видите в выводе. Либо откажитесь от него:

Inovke-Command ... -AsJob | Out-Null
[void](Invoke-Command ... -AsJob)

или запишите его в переменную, чтобы вы могли использовать его позже:

$job = Invoke-Command ... -AsJob
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...