Как запустить приложение в существующем сеансе

Когда запускается запланированное задание, я хотел бы открыть окно Powershell на рабочем столе, чтобы отслеживать файл журнала и наблюдать за ходом выполнения. В частности, я хотел бы, чтобы задача открыть окно на рабочем столе и запустить Get-Content C:\LogFile.txt -Wait, Когда задача закончится, я бы хотел закрыть окно powershell.

Есть ли способ запустить графическое окно под другим пользователем? Из того, что я обнаружил, большинство команд будут запускаться с правами указанного пользователя, но не будут создавать окна на своем рабочем столе.

Было бы еще лучше, если бы он запускался под любым пользователем, вошедшим в систему при запуске задачи, а не жестко закодированным пользователем.

РЕДАКТИРОВАТЬ: пока у меня есть код ниже. Я работаю до такой степени. Это создает хвостовое окно, но когда я звоню $p.kill() он убивает процесс psexec, но не процесс powershell. Могу ли я отправить Ctrl-C в окно powershell?

# start tailing the log
$psexec = 'c:\psexec.exe'
$arguments = '-i powershell.exe -windowstyle maximized -command "& {get-content c:\logs\task_log.log -wait}"'
$p = start-process $psexec -argumentlist $arguments -passthru
# start the task
Some-task.exe
# kill the tail
$p.kill()

1 ответ

Во-первых, вам понадобится PSExec.exe, он бесплатный и предоставляется группой внутренностей sys. Вы хотите команду, подобную этой:

psexec \\RemoteComputer "%systemroot%\system32\windowspowershell\v1.0\powershell.exe" -u username -p password -i -h

Прочитайте файл справки PSExec и поиграйтесь с настройками. Вы будете наиболее заинтересованы в переключателе '-i', поскольку он указывает на сеанс, с которым нужно взаимодействовать. Просто используя '-i' без идентификатора сеанса (как в примере), psexec просто выбирает один. Если нет ни одного доступного, он будет использовать сессию 0.

Вы даже можете обнаружить, что New-PSSession а также Enter-PSSession Командлеты Powershell лучше подходят для того, что вам нужно. На вашем компьютере запустите следующее в powershell:

$Session = New-PSSession -ComputerName computer.domain.com
Enter-PSSession -Session $Session

Когда вы выполняете эти команды, ваш терминал на вашем компьютере становится терминалом на удаленном компьютере. Команды, которые вы вводите в удаленном сеансе, выполняются на удаленном компьютере, а вывод возвращается обратно к вашему. Когда вы закончите, введите Exit-PSSession Команда, чтобы вернуться к вашей собственной сессии.

Другие вопросы по тегам