Использование powershell и wmi для остановки и запуска удаленного процесса

Я работаю над способом удаленной остановки и перезапуска процесса через PS и WMI. Я могу легко остановить / прекратить процесс, но я бы тоже хотел перезапустить процесс, и у меня возникают проблемы с этим. Ниже приведен скрипт, который я использую для удаленной остановки / завершения процесса. Любая идея, что я могу добавить к этому, который затем перезапустит тот же процесс?

$comp = read-host -Prompt "Enter computer name"
(Get-WmiObject Win32_Process -ComputerName $comp | ?{     $_.ProcessName -match "PhotoScreensaver.scr" }).Terminate()

1 ответ

Решение

Хотя я уверен, что вы могли бы сделать это с WMI, есть и более простой способ. Powershell имеет встроенный командлет под названием Invoke-Command который предназначен для удаленного выполнения кода. Есть также Start-Process а также Stop-Process для управления процессами.

Invoke-Command -ComputerName $Computer -ScriptBlock {
    Start-Process $ProcessName
    Stop-Process $ProcessName
}

Если вы находитесь в доменной среде, возможно, вам придется использовать -Authentication Kerberos возможность получить права на удаленный компьютер.

Я также хотел бы отметить, что эти процессы будут открываться в другом сеансе на удаленном компьютере. Если пользователь вошел в систему, он не будет выполняться в своем сеансе. Вам нужен другой инструмент, как PSExec от парней SysInternals для этого.

Другие вопросы по тегам