请菜鸟帮忙。我正在尝试编写一个脚本来检查进程是否正在运行,如果没有,则启动它。如果进程正在运行,它应该什么都不做。到目前为止,我已经提出了以下内容,但它正在启动该进程的一个新实例,无论它是否已经在运行。任何帮助表示赞赏。
$Prog = "C:\utilities\prog.exe"
$Running = Get-Process prog -ErrorAction SilentlyContinue
$Start = ([wmiclass]"win32_process").Create($Prog)
if($Running -eq $null)
{$Start}
else
{}
最佳答案
$path = "C:\utilities\prog.exe"
$list = get-process | where-object {$_.Path -eq $path }
if ($list -eq $null) { start-process -filepath $path }
或者
$path = "C:\utilities\prog.exe"
get-process | where-object {$_.Path -eq $path } | measure-object | where-object { $_.Count -eq 0} | foreach-object {start-process -filepath $path }
这将为您节省 if 语句和一个变量声明。它也可以是一行命令:
获取进程
选择你感兴趣的路径
使用 measure 对象获取有关您拥有的列表的统计信息
仅当 stats 的计数值为 0
时才继续管道
启动进程
文档更新时间: 2023-08-30 02:07 作者:月影鹏鹏