Passei algum tempo jogando com o powershell e finalmente consegui o que queria:
powershell.exe ps | ? { $_.path -eq 'c:\windows\system32\notepad.exe' } | Foreach-object { $_.WaitForExit() }
Eu tive um pequeno programa em F # (semelhante ao C #), que obtém processos por nome, depois filtra o particular pelo seu caminho e espera que ele saia:
let processes = Process.GetProcessesByName("MyProcessName")
if (processes.Length > 0)
then for proc in processes do
if (proc.MainModule.FileName = "C:\Example\MyProcessName.exe")
then proc.WaitForExit()
Mas este código funciona apenas no computador local. Agora quero alcançar a mesma funcionalidade no computador remoto.
É por isso que escolho o PowerShell (sou completamente novo nisso).
É possível filtrar o processo pelo seu caminho e esperar que ele saia usando uma linha no powershell? Se não, talvez você possa fornecer uma solução mais longa?
Como vou executar essa linha no computador remoto eu já tenho uma ideia. Tudo que eu preciso é apenas essa linha mágica.
EDIT: Na verdade, esta linha deve funcionar na máquina local, porque eu vou passá-lo usando o msdeploy, que executa na máquina remota como um comando local.
O ideal seria chamar um Wait-Process
na máquina de destino. Veja este post para o código detalhado:
link