Powershell - 如果进程未运行,则启动它

2024-02-29

菜鸟请帮忙。我正在尝试编写一个脚本来检查进程是否正在运行,如果没有,则启动它。如果该进程正在运行,则它不应该执行任何操作。到目前为止,我已经提出了以下内容,但它正在启动该进程的一个新实例,无论它是否已经在运行。任何帮助表示赞赏。

$Prog = "C:\utilities\prog.exe"
$Running = Get-Process prog -ErrorAction SilentlyContinue
$Start = ([wmiclass]"win32_process").Create($Prog)
if($Running -eq $null)
{$Start}
else
{}

首先,这是您的代码中的错误。 在您的代码中,该进程是在您评估程序是否已经运行之前创建的

$Prog = "C:\utilities\prog.exe"
$Running = Get-Process prog -ErrorAction SilentlyContinue
$Start = ([wmiclass]"win32_process").Create($Prog) # the process is created on this line
if($Running -eq $null) # evaluating if the program is running
{$Start}

可以通过将代码块包装在 {}(脚本块)中来创建应在代码中进一步评估的代码块:

$Prog = "C:\utilities\prog.exe"
$Running = Get-Process prog -ErrorAction SilentlyContinue
$Start = {([wmiclass]"win32_process").Create($Prog)} 
if($Running -eq $null) # evaluating if the program is running
{& $Start} # the process is created on this line

但是,如果您正在寻找简短的一句话来解决您的问题:

if (! (ps | ? {$_.path -eq $prog})) {& $prog}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Powershell - 如果进程未运行,则启动它 的相关文章

随机推荐