我在 F#(类似于 C#)中编写了一个小程序,它通过名称获取进程,然后通过路径过滤特定进程并等待它退出:
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()
但此代码仅适用于本地计算机。现在我想在远程计算机上实现相同的功能。
所以这就是我选择 PowerShell 的原因(我对它完全陌生)。
是否可以通过 powershell 中的一行来通过路径过滤进程并等待它退出?如果没有,也许您可以提供更长的解决方案?
我将如何在远程计算机上执行此行代码,我已经有想法了。我所需要的只是那行神奇的代码。
编辑:实际上这行应该在本地机器上工作,因为我将使用 msdeploy 传递它,它会将其作为本地命令在远程机器上执行。
答案1
Wait-Process
理想情况下,你会在目标机器上 调用。详细代码见此帖子:https://stackoverflow.com/questions/18341767/powershell-check-on-remote-process-if-done-continue
答案2
花了一些时间玩 powershell 终于得到了我想要的:
powershell.exe ps | ? { $_.path -eq 'c:\windows\system32\notepad.exe' } | Foreach-object { $_.WaitForExit() }