监测Seafile进程未响应关闭弹窗及重启

将以下代码修改为ps1格式的powershell脚本运行

param (
    [string]$processName = "seafile-applet",
    [string]$processPath = "E:\seafile7\bin\seafile-applet.exe"
)

# 打印标题
Write-Host "==============================="
Write-Host " Seafile 进程监控脚本"
Write-Host "==============================="
Write-Host "监控进程名称: $processName"
Write-Host "进程路径: $processPath"
Write-Host "==============================="

# 初始化崩溃计数
$crashCount = 0

while ($true) {
    # 获取进程
    $process = Get-Process -Name $processName -ErrorAction SilentlyContinue

    if ($null -eq $process) {
        # 如果进程不在运行,则启动它
        Write-Output "$processName 进程未运行,正在重新启动..."
        Start-Process $processPath
        $crashCount++
    } else {
        # 检查进程是否未响应
        foreach ($p in $process) {
            if ($p.Responding -eq $false) {
                Write-Output "$($p.Name) 进程未响应,正在重新启动..."

                # 关闭进程
                Stop-Process -Id $p.Id -Force

                # 关闭可能弹出的消息框
                $errorDialog = Get-Process -Name "WerFault" -ErrorAction SilentlyContinue
                if ($errorDialog) {
                    foreach ($dialog in $errorDialog) {
                        Stop-Process -Id $dialog.Id -Force
                    }
                }

                # 启动进程
                Start-Process $processPath
                $crashCount++
                break
            }
        }
    }

    # 输出崩溃次数
    Write-Output "崩溃次数: $crashCount"

    # 等待10秒后再次检查
    Start-Sleep -Seconds 10
}

posted @ 2024-08-12 09:37  Docker丶  阅读(41)  评论(0)    收藏  举报