0

我知道这是一个非常糟糕的主意。但我有一个检查僵尸进程的脚本,我想测试它。目前,它着眼于跨不同机器的两个独立进程。如果它们的父进程 ID 不存在,它会回显主机名和 PID。我认为它工作正常;但我总是喜欢通过测试来确认我的脚本。有什么方法可以确认它工作正常吗?我想创建一个僵尸进程;但我不知道这是否是最好的方法(我也不知道如何以可控的方式轻松创建一个)。这是我写的脚本:

$m = "System1 System2 System3"
$zombies

foreach($a in $m.split(" "))
{
    $pros = Get-WmiObject -Class Win32_Process -Namespace root/cimv2 -ComputerName $a
    $pids = @()

    foreach($pro in $pros)
    {
        $pids += $pro.ProcessId
    }

    foreach($pro in $($pros | Where-Object {$_.Name -eq "Proc1.exe" -or $_.Name -eq "Proc2.exe"}))
    {
        if($pids -notcontains $pro.ParentProcessId)
        {
            $zombies += "HOST: $(pro.MachineName) PID: $($pro.ProcessId)"
        }
    }
}

foreach($zombie in $zombies)
{
    Write-Output $zombie
}
4

1 回答 1

1

如果您使用以下命令:

cmd /c 记事本.exe

你得到以下结果:

在此处输入图像描述

如果你杀死 cmd.exe 你会得到:

在此处输入图像描述

父级仍然是不存在的 cmd.exe PID 8960。据我了解,可以使用 PID 8960 创建另一个进程。

于 2013-07-29T07:57:38.483 回答