杀死指定进程名称的小VBS_惊喜策划公司营销推广

2024-02-23

杀死指定进程名称的小VBS

这是一段用于终止特定进程名的VBS脚本,期望它能解决您的需求。

以下脚本提供了强大的进程管理功能,可用于检测进程存在与否及强制终止运行中的进程。其核心是接受用户指定的进程名称作为操作目标。

```vbscript

On Error Resume Next ' 启用错误处理机制,脚本继续执行

Dim ProcessTarget, KillMode, ProcessList, strComputer, objWMIService, colProcess, objProcess

ProcessTarget = "" ' 预定义进程名称变量(置空)

KillMode = "" ' 预定义终止模式标志(置空)

ProcessList = "" ' 预定义进程名称清单(置空)

' 分析传入参数

If WScript.Arguments.Count = 1 Then

' 单一参数默认为目标进程名

ProcessTarget = WScript.Arguments(0)

ElseIf WScript.Arguments.Count >= 2 Then

ProcessTarget = WScript.Arguments(0)

KillMode = WScript.Arguments(1) ' 解析终止模式开关参数

If WScript.Arguments.Count >= 3 Then

ProcessList = WScript.Arguments(2) ' 解析进程名称清单参数

End If

End If

' 验证目标进程名是否有效

If ProcessTarget = "" Then

WScript.Echo "必须明确指定一个有效的进程名!" & vbCrLf & "Usage: cscript.exe prockill.vbs ProcessName [kill] [LIST]"

WScript.Quit

End If

strComputer = "." ' 定位本地机器

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") ' 连接WMI服务

Set colProcess = objWMIService.ExecQuery("Select from Win32_Process Where Name = '" & ProcessTarget & "'") ' 精准查询目标进程

Dim matchCount : matchCount = 0

For Each objProcess in colProcess

matchCount = matchCount + 1 ' 精确统计匹配的进程实例数量

Next

' 根据匹配结果采取行动

If matchCount <= 0 Then

WScript.Echo "未发现名为 " & ProcessTarget & " 的进程。"

Else

WScript.Echo "成功发现 " & matchCount & " 个名为 " & ProcessTarget & " 的进程实例。"

' 检查是否需执行终止操作

If (UCase(KillMode) = "KILL") Or (UCase(KillMode) = "T") Then

Dim terminateResult : terminateResult = True

For Each objProcess in colProcess

' 验证进程是否在清单内(若清单启用)

If ProcessList <> "" Then

Dim arrList : arrList = Split(ProcessList, ",") ' 切分进程名称清单

Dim bFound : bFound = False

For Each strItem in arrList

' 忽略空白清单项

If Trim(strItem) <> "" Then

' 执行大小写非敏感匹配

If UCase(Trim(strItem)) = UCase(ProcessTarget) Then

bFound = True

Exit For

End If

End If

Next

' 处理清单外的进程

If Not bFound Then

WScript.Echo "跳过终止:" & ProcessTarget & " 未列入清单 " & ProcessList

terminateResult = False

Exit For

End If

End If

' 执行实际终止操作

objProcess.Terminate()

WScript.Echo "系统成功终止目标进程:" & ProcessTarget & " (PID: " & objProcess.ProcessId & ")"

Next

If t

erminateResult Then

WScript.Echo "所有匹配的 " & ProcessTarget & " 进程执行终止操作成功完成。"

Else

WScript.Echo "清单 " & ProcessList & " 外的 " & ProcessTarget & " 进程保留运行状态。"

End If

Else

WScript.Echo "当前为检测模式(仅查询未终止进程)。" & vbCrLf & "如需终止,请附加 'kill' 或 't' 参数执行命令。"

End If

End If

Set colProcess = Nothing

Set objWMIService = Nothing ' 严谨释放WMI对象资源

```