# ========================================================= # MAX Windows Toolkit - 启动 PingTools 便携版 # 中文界面,统一风格 # ========================================================= $Common = "C:\Setup\windows\lib\common.ps1" if (Test-Path $Common) { . $Common } Write-Header "启动 PingTools 便携版" Show-AdminWarn $ToolFileName = "PingTools.exe" $ToolUrl = "$Global:RepoBase/tools-bin/$ToolFileName" $LocalToolDir = "C:\Setup\windows\tools-bin\pingtools" $LocalToolPath = Join-Path $LocalToolDir $ToolFileName $ShortcutDir = "$env:Public\Desktop" $ShortcutPath = Join-Path $ShortcutDir "PingTools.lnk" try { New-Item -ItemType Directory -Path $LocalToolDir -Force -ErrorAction Stop | Out-Null } catch {} # 确保 PingTools 存在 function Ensure-PingTools { if (Test-Path $LocalToolPath) { return $true } Write-Warn "本地未找到 PingTools,正在下载..." return (Download-File -Url $ToolUrl -OutFile $LocalToolPath) } # 更新 PingTools function Update-PingTools { if (Test-Path $LocalToolPath) { try { Remove-Item $LocalToolPath -Force -ErrorAction SilentlyContinue } catch {} } if (Download-File -Url $ToolUrl -OutFile $LocalToolPath) { try { Unblock-File -Path $LocalToolPath -ErrorAction SilentlyContinue } catch {} Write-OK "PingTools 已更新" } } # 启动 PingTools function Start-PingTools { if (-not (Ensure-PingTools)) { Write-Err "无法启动 PingTools(下载失败)" return } try { Unblock-File -Path $LocalToolPath -ErrorAction SilentlyContinue } catch {} try { Start-Process -FilePath $LocalToolPath -WorkingDirectory $LocalToolDir Write-OK "PingTools 已启动" } catch { Write-Err "启动 PingTools 失败" Write-Muted $_.Exception.Message } } # 打开文件夹 function Open-PingToolsFolder { New-Item -ItemType Directory -Path $LocalToolDir -Force | Out-Null Start-Process explorer.exe $LocalToolDir } # 创建桌面快捷方式 function Create-PingToolsShortcut { if (-not (Ensure-PingTools)) { Write-Err "无法创建快捷方式(PingTools 不可用)" return } try { $Shell = New-Object -ComObject WScript.Shell $Shortcut = $Shell.CreateShortcut($ShortcutPath) $Shortcut.TargetPath = $LocalToolPath $Shortcut.WorkingDirectory = $LocalToolDir $Shortcut.Description = "PingTools Portable" $Shortcut.Save() Write-OK "快捷方式已创建: $ShortcutPath" } catch { Write-Err "创建快捷方式失败" Write-Muted $_.Exception.Message } } # 显示使用提示 function Show-PingToolsTips { Write-Info "PingTools 适用于局域网设备发现和批量 Ping" Write-Info "" Write-Info "推荐用途:" Write-Info "- 快速检查局域网在线 IP 地址" Write-Info "- 检查打印机、网关、NAS、服务器或摄像头是否在线" Write-Info "- 与 ARP 表和局域网发现脚本对比" Write-Info "" Write-Info "推荐流程:" Write-Info "1. 选择正确的子网,如 192.168.1" Write-Info "2. 如果网络较弱,将线程数设为 100 或更低" Write-Info "3. 根据需要启用 MAC 地址显示" Write-Info "4. 开始扫描" Write-Info "" Write-Muted "本地路径: $LocalToolPath" } # 主菜单循环 :pingLoop while ($true) { Write-Header "PingTools 便携版" Write-Info "可用操作:" Write-Info "1. 启动 PingTools" Write-Info "2. 下载/更新 PingTools" Write-Info "3. 打开 PingTools 文件夹" Write-Info "4. 创建桌面快捷方式" Write-Info "5. 显示使用提示" Write-Info "0. 退出" Write-Info "" $Choice = Read-Host "请选择" Write-Line switch ($Choice.Trim()) { "1" { Start-PingTools; Pause-Max } "2" { Update-PingTools; Pause-Max } "3" { Open-PingToolsFolder; Pause-Max } "4" { Create-PingToolsShortcut; Pause-Max } "5" { Show-PingToolsTips; Pause-Max } "0" { break :pingLoop } default { Write-Err "无效选项"; Pause-Max } } }