Экран Windows PowerShell эквивалентен экрану

Я использую Windows-машину как ssh-сервер. Я хочу удаленно запускать некоторые задачи, для завершения которых требуется несколько часов. Есть ли способ иметь постоянный процесс даже после того, как удаленный сеанс ssh отключен в Powershell?

  • X эквивалент утилиты 'screen'
  • Я не вижу названный сеанс в экране gnu
  • Использовать gnu-screen и X вместо рабочей среды?
  • Как отключить отображение даты и времени в вертикальных расколах экрана GNU?
  • Vim не окрашивает конец строк при работе внутри экрана
  • Как подключиться к потерянному экрану (отсоединенный, отсутствующий сокет)?
  • Как я могу удаленно запускать сценарии на нескольких серверах, добавлять выходные данные
  • В чем разница между SCP и SFTP?
  • Войдите в систему с другой оболочкой, когда исходная оболочка «сломана»
  • Gnu screen: найдите, какое окно экрана имеет заданный процесс или переменную?
  • Используйте экран GNU в качестве логина "shell"
  • По умолчанию PowerShell выдает UTF-8 вместо UTF-16?
  • 4 Solutions collect form web for “Экран Windows PowerShell эквивалентен экрану”

    Используйте параметр RunasJob через PSSession:

    (Из справки about_remote_jobs)

    НАЧАТЬ УДАЛЕННОЕ РАБОТУ, ВОЗВРАЩАЮЩИЕ РЕЗУЛЬТАТЫ В ЛОКАЛЬНУЮ КОМПЬЮТЕРУ (ASJOB)

    Чтобы запустить фоновое задание на удаленном компьютере, который возвращает результаты команды на локальный компьютер, используйте параметр AsJob командлета, например командлет Invoke-Command.

    Когда вы используете параметр AsJob, объект задания фактически создается на локальном компьютере, даже если задание выполняется на удаленном компьютере. Когда задание завершено, результаты возвращаются на локальный компьютер.

    Вы можете использовать командлеты, содержащие имя задания (командлеты Job) для управления любым заданием, созданным любым командлетом. Многие из командлетов, у которых есть параметры AsJob, не используют удаленное управление Windows PowerShell, поэтому
    Вы можете использовать их даже на компьютерах, которые не настроены для
    Удалении и не отвечающих требованиям для удаленного доступа.

    ШАГ 1: INVOKE-COMMAND -ASJOB

    Следующая команда использует параметр AsJob команды Invoke-Command для запуска фонового задания на компьютере Server01. Задание запускает команду Get-Eventlog, которая получает события в системном журнале. Вы можете использовать параметр JobName для назначения отображаемого имени заданию.

    invoke-command -computername Server01 -scriptblock {get-eventlog system} -asjob 

    Результаты команды напоминают следующий примерный вывод.

      SessionId Name State HasMoreData Location Command --------- ---- ----- ----------- -------- ------- 1 Job1 Running True Server01 get-eventlog system 

    Когда используется параметр AsJob, Invoke-Command возвращает тот же тип объекта задания, что и Start-Job. Вы можете сохранить объект задания в переменной, или вы можете использовать команду Get-Job для выполнения задания.

    Обратите внимание, что значение свойства Location показывает, что задание выполнялось на компьютере Server01.

    ШАГ 2: GET-JOB

    Чтобы управлять заданием, запущенным с помощью параметра AsJob командлета Invoke-Command, используйте командлеты Job. Поскольку объект задания, представляющий удаленное задание, находится на локальном компьютере, вам не нужно запускать удаленные команды для управления заданием.

    Чтобы определить, завершено ли задание, используйте команду Get-Job. Следующая команда получает все задания, которые были запущены в текущем сеансе.

      get-job 

    Поскольку удаленное задание было запущено в текущем сеансе, локальная команда Get-Job получает задание. Свойство State объекта job показывает, что команда была успешно завершена.

      SessionId Name State HasMoreData Location Command --------- ---- ----- ----------- -------- ------- 1 Job1 Completed True Server01 get-eventlog system 

    ШАГ 3: ПОЛУЧЕНИЕ-РАБОТА

    Чтобы получить результаты задания, используйте командлет Receive-Job. Поскольку результаты задания автоматически возвращаются на компьютер, на котором находится объект задания, вы можете получить результаты с помощью локальной команды «Получить работу».

    Следующая команда использует командлет Receive-Job для получения результатов задания. Он использует идентификатор сеанса для идентификации задания. Эта команда сохраняет результаты задания в переменной $ results. Вы также можете перенаправить результаты в файл.

      $results = receive-job -id 1 

    После некоторых экспериментов, теперь я заменил ssh на PowerShell Remoting.

    Тем более, НАЧАТЬ ПУЛЬТ ДИСТАНЦИОННОГО ЗАДАНИЯ, КОТОРАЯ ПРОВЕРЯЕТ РЕЗУЛЬТАТЫ НА РАЗЛИЧНОЙ КОМПЬЮТЕРНОЙ секции about_Remote_Jobs , действительно помогли.

    В основном, мой текущий рабочий процесс

    1. Откройте новую PSSession
    2. Вызовите команду ( Invoke-Command ) на удаленном сервере как задание с помощью Start-Job

    Затем я могу свободно отключиться от сеанса, а затем снова подключиться к сеансу и получить выходные задания с помощью Receive-Job .

    То, что вы ищете, это PSSessions.

    На странице about_pssessions на technet ( http://technet.microsoft.com/en-us/library/hh847839.aspx )

    Однако, в отличие от сеанса, который запускается автоматически, вы можете управлять создаваемыми PSSessions. Вы можете создавать, создавать, настраивать и удалять их, отключать и повторно подключаться к ним, а также запускать несколько команд в одной и той же PSSession. PSSession остается доступным до тех пор, пока вы его не удалите или не закончите время.

    Поскольку OP использует ssh для подключения к Powershell с не-Windows-машины, он не может использовать сеансы Powershell. Он будет запускать его, как если бы он был подключен к локальной машине. Командлет Start-Job должен выполнить трюк:

    Start-Job -scriptblock {скрипт или команда, которую вы хотите запустить как задание}

    Давайте будем гением компьютера.