如果开始时间少于 2 小时,则终止进程

Kill the process if start time is less than 2 hours

如果启动时间少于 2 小时,我需要终止进程。

我已经编写了下面的 cmdlet 来找出 starttime 但是如何找出它是否少于 2 小时:

get-process process1 | select starttime

也有可能在某些主机上 process1 不是 运行。所以我需要先检查 if the process1 is running

您可以使用您选择的循环,在此示例中 ForEach-Object in addition to an if condition 检查 StartTime 值是否低于 2 小时。

如果您需要先检查进程是否 运行,那么您需要获取所有进程并按您要查找的进程名称进行过滤。然后检查Where-Object的返回值是否为$null

$procName = 'myprocess'
$process = Get-Process | Where-Object Name -EQ $procName
if(-not $process) {
    Write-Warning "$procName not found!"
}
else {
    $process | ForEach-Object {
        if($_.StartTime -lt [datetime]::Now.AddHours(-2)) {
            try {
                'Attempting to stop {0}' -f $_.Name
                Stop-Process $_ -Force
                '{0} successfully stopped.' -f $_.Name
            }
            catch {
                Write-Warning $_.Exception.Message
            }
        }
    }
}