2

Когда запускается запланированное задание, я хотел бы открыть окно 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 ответ1

0

Во-первых, вам понадобится 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:

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .