запустить удаленный процесс в контексте - PullRequest
6 голосов
/ 30 мая 2011

Мне интересно, как запустить процесс удаленно в контексте пользователя, как он его запустил. Позволь мне объяснить. Я знаю, как запустить процесс удаленно, например, я хочу запустить блокнот:

Invoke-WmiMethod win32_process -name create -ComputerName $remoteMachine -ArgumentList "notepad" -credential (Get-Credential)

проблема в том, что он запускает блокнот «на заднем плане» (не в контексте пользователя), поэтому в этом случае он не увидит открытый диалог / процесс «Блокнот» (он увидит блокнот только в списке процессов). в диспетчере задач). Я хочу, чтобы он увидел диалоговое окно блокнота.

Кто-нибудь знает, как этого добиться?

Ответы [ 2 ]

10 голосов
/ 11 января 2012

Используйте встроенный SchTasks.exe для поддерживаемого способа создания процессов в удаленной системе.Этот интерфейс взаимодействует со встроенной службой планировщика задач и не требует PsExec.exe.

Чтобы создать задачу на удаленном компьютере (в данном примере, работающем как SYSTEM):

schtasks.exe /create /F /S COMPUTERNAME /RU "NT AUTHORITY\SYSTEM" /RL HIGHEST /SC ONSTART /TN "RemoteProcess" /TR "program.exe \"argument 1\" \"argument 2\""

schtasks.exe /Run /S COMPUTERNAME /I /TN "RemoteProcess"

schtasks.exe /Delete /S COMPUTERNAME /TN "RemoteProcess"

Примечания:

  • Мы используем ONSTART в качестве расписания, но затем запускаем процесс вручную и удаляем его до запуска расписания.Это фактически означает «просто сделай это сейчас».Вы также можете указать /SC ONCE /SD "01/01/1980" /ST "00:00:00", который будет иметь тот же эффект.
  • Этот пример работает как System.Для запуска в качестве зарегистрированного пользователя, при условии, что вы знаете, кто это использует /RU "DOMAIN\USER".Это будет работать без пароля (опция /RP), если пользователь вошел в систему.
  • Вы можете использовать /Query /S COMPUTERNAME /TN "RemoteProcess" /V, чтобы найти текущее состояние, например, дождаться выхода и затем прочитать код выхода.

Вы также можете выполнить все вышеперечисленное с помощью сценария, используя объекты сценариев планировщика заданий:

8 голосов
/ 30 мая 2011

Вы не можете запускать интерактивные процессы, используя удаленное взаимодействие WMI или PowerSHell. Это ограничение безопасности / функция. Вам нужно использовать PSExec, если вы хотите запускать удаленные интерактивные процессы.

...