Доброго времени суток
Настал тот момент, когда вам необходимо удаленно выполнять команды на ПК пользователей, как это сделать используй 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)
Настал тот момент, когда вам необходимо удаленно выполнять команды на ПК пользователей, как это сделать используй 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)
Комментариев нет:
Отправить комментарий