вторник, 23 сентября 2014 г.

Выполнение удаленной команды от пользователя / remore run app Interactive

Доброго времени суток
Настал тот момент, когда вам необходимо удаленно выполнять команды на ПК пользователей, как это сделать используй PowerShell и WMI я опишу ниже в 2-х частях

1 часть
Удаленный запуск приложения:

 #Вводим имя компьютера
$PC = 'test-pc'
#Вводим команду
$command = 'c:\saplogon.bat'

#Формируем строку для WMI

$WMI_Path = "\\" +  $PC + "\root\cimv2:Win32_Process"
#Запускаем удаленную команду

([wmiclass]$WMI_Path).create($command)

Есть важное ограничение, все выполняемые команды и приложения должны располагаться локально на машине.По этому "saplogon.bat" в данном примере я заранее скопировал на удаленную машину

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

#Вводим имя компьютера
$PC = 'test-pc'
#Вводим команду
$TaskR = 'c:\saplogon.bat'
#Формируем строку для WMI$WMI_Path = "\\" +  $PC + "\root\cimv2:Win32_Process"

далее нам необходимо, используя  "SCHTASKS", создать запланированное задание. Используя предыдущий метод получения логина пользователя на компьютере и выполнения удаленных команд из первой части создадим его.
 
#Получаем WMI объект удаленной системы с информацией о системе
$WMI_Object = Get-WmiObject Win32_ComputerSystem –Computer $PC

#сформируем команду для создания задачи, подробнее о SCHTASKS тут
#в данной команде: создать задание от имени пользователя, остальные условия не важны, так #как запуск задания мы произведем самостоятельно
$command = "SCHTASKS /Create /SC MONTHLY /MO first /D SUN /TN REMOTE_RUN /TR $TaskR /RU " + $WMI_Object.UserName


#Выполним команду по созданию задания
([wmiclass]$WMI_Path).create($command)

#Теперь нам необходимо запустить задание
$command = "SCHTASKS /Run /TN REMOTE_RUN"
([wmiclass]$WMI_Path).create($command)
#советую подождать немного
sleep 5

#и конечно прибрать за собой, удалив данное задание
$command = "SCHTASKS /delete /TN REMOTE_RUN /F"
([wmiclass]$WMI_Path).create($command)

Комментариев нет:

Отправить комментарий