Как запустить приложение в существующем сеансе
Когда запускается запланированное задание, я хотел бы открыть окно 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
Команда, чтобы вернуться к вашей собственной сессии.