PowerShell:检测特定打开的程序正在运行(并关闭它)

ohtdti5x  于 11个月前  发布在  Shell
关注(0)|答案(1)|浏览(192)

我正在尝试自动化工作流程。自动化脚本主要是在PowerShell中编写的,它包括以下步骤:1)打开程序2)与API通信,阅读值等3)关闭程序。此脚本将在一天内运行多次,不需要在每次脚本完成时关闭程序,而是在脚本的开头检查程序是否已经打开,如果没有,就打开它。我想实现这两个,然后决定以后使用哪个解决方案。
用于打开程序的代码已经完成,但是仅仅运行.exe文件来打开程序是不够的,因为我必须加载正确的设置和GUI,为此,在从命令行打开.exe文件时,另外,我必须使用-s,还有-c。我在 runProgram.cmd 中总结了这一切,所以在PowerShell脚本中,我只运行这个文件来打开程序。然而,我不确定如何检测已经打开的程序(它已经打开),以及如何关闭它。我相信一个解决方案可能会使用进程,在Get-Process的帮助下,但我不确定它的功能和限制(如何检查我的程序的进程是否不在正在运行的进程列表中?),以及是否有更好的方法来处理这个问题。

v09wglhw

v09wglhw1#

我找到了解决办法:
1.打开程序并打开PowerShell,然后在PowerShell中输入Get-Process(这将列出所有当前运行的进程)
1.搜索你的进程(通过名字)。通常你不知道哪个进程是你要找的,你可以关闭程序,然后再次输入Get-Process,然后寻找从列表中消失的进程,因为你关闭了它。让我们假设它的名字是“yourprocess”。
1.在PS代码中,输入$val = Get-Process -Name yourprocess。如果它正在运行,则$val应该等于有关进程的某些数据,如果它没有运行,则$val为0。因此,如果要检查它是否打开,则应该使用用途:
if($null -ne $val){...}
最后,停止进程:Stop-Process -Name yourprocess

相关问题