如果开始时间少于 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
}
}
}
}
如果启动时间少于 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
}
}
}
}