Замороженная форма Powershell при выполнении команд SSH

250
igor

Есть простой скрипт, который запускается через форму Powershell

По запросу он получает информацию с серверов Linux, используя plinkкоманду, а затем печатает ее как вывод в виде. Проблема в том, что форма зависает при получении информации.

Я пытался использовать get-jobтот же результат

Моя оригинальная команда:

plink -batch -ssh $User@$srv -pw $pass -m $executeCommandFile | fl | out-string 

Добавлена get-jobлогика:

$myjob = start-job -scriptblock  While ( ($myjob | Select-Object -ExpandProperty State) -eq "Running") { sleep 1 } $results = receive-job -job $myjob 
1

1 ответ на вопрос

1
postanote

Разделите шаги. Попробуйте отправить запрос данных plink во временный файл, иметь монитор для временного местоположения, и когда запись данных завершится, используйте код формы, чтобы прочитать данные временного файла обратно в форму по сравнению с подходом фонового задания.

Пробовал уже. Запрос данных plink является частью кода формы, поэтому он все еще ожидает записи в файл. У меня нет знаний, чтобы отделить его от кода формы, фоновой работы и временного файла - это то, что я нашел в Интернете. Но это не хорошо для этого случая igor 6 лет назад 0
Q: Что находится в этом командном файле? Q: Получаете ли вы какие-либо результаты для файла / интерфейса вообще? Кроме того, я хотел добавить в свой первый ответ, что вы используете переменную в локальной области вместо удаленной области. Смотрите это и, в частности, «Пример 5: Использование локальной переменной в удаленной команде» postanote 6 лет назад 0
1. если! [["$ (dpkg -l)" = ~ (^ | [[: space:]]) "$ package" (\ $ | [[: space:]])]]; затем эхо 1; Fi; \\ проверяет, установлен ли определенный пакет linux, используя команду `dpkg` igor 6 лет назад 0
2. Выходное значение равно NULL или 1, помещается в переменную и затем выполняется соответствующие вычисления. igor 6 лет назад 0
3. Вы имеете в виду invoke-command? igor 6 лет назад 0

Похожие вопросы