-
所有脚本保存为 .bat 格式时,编码选择「ANSI」(避免中文乱码); -
执行前替换脚本中的「自定义参数」(如路径、服务名、阈值等); -
关键操作建议先在测试环境验证,再部署到生产服务器。
@echo off
chcp 65001 >nul 2>&1
set"report=Server_Check_Report_%date:~0,4%%date:~5,2%%date:~8,2%.txt"
echo ==================== Windows Server 巡检报告 ==================== > %report%
echo 生成时间:%date% %time% >> %report%
echo 服务器名称:%COMPUTERNAME% >> %report%
echo 登录用户:%USERNAME% >> %report%
echo. >> %report%
echo1. 系统版本/位数 >> %report%
systeminfo | findstr /i "操作系统名称 系统类型" >> %report%
echo. >> %report%
echo2. CPU/内存使用情况 >> %report%
wmic cpu get name,loadpercentage /format:list >> %report%
wmic OS get TotalVisibleMemorySize,FreePhysicalMemory /format:list >> %report%
echo. >> %report%
echo3. 磁盘空间(GB) >> %report%
wmic logicaldisk where drivetype=3get caption,freespace,size /format:list >> %report%
echo. >> %report%
echo4. 开机时间/运行时长 >> %report%
systeminfo | findstr /i "系统启动时间" >> %report%
echo. >> %report%
echo5. 关键服务状态(可自定义) >> %report%
for %%s in (WinRM W3SVC MSSQLSERVER TermService) do (
sc query %%s | findstr /i "SERVICE_NAME STATE" >> %report%
)
echo. >> %report%
echo6. 占用CPU前5的进程 >> %report%
wmic process get name,processid,percentprocessorTime | sort /r /+25 | findstr /v "0.00" | findstr /v "PercentProcessorTime" | head -5 >> %report%
echo 巡检完成!报告保存至:%cd%\%report%
pause
-
涵盖系统、硬件、磁盘、服务、进程五大核心维度,是运维巡检的基础模板; -
可自定义「关键服务列表」(如替换为你的数据库、中间件服务名); -
报告按日期命名,便于归档对比。
@echo off
chcp 65001 >nul 2>&1
:: 自定义:需管理的服务名列表(可通过 sc query 查看)
set"service_list=W3SVC TermService MSSQLSERVER WinRM"
echo ==================== 服务批量管理 ====================
echo 请选择操作:
echo 1. 启动所有指定服务
echo 2. 停止所有指定服务
echo 3. 重启所有指定服务
echo 4. 设置服务为自动启动
set /p opt=请输入数字(1-4):
if"%opt%"=="1" (
for %%s in (%service_list%) do (
echo 启动服务:%%s
net start %%s >nul 2>&1
if !errorlevel! equ 0 (echo 成功) else (echo 失败/已启动)
)
) elseif"%opt%"=="2" (
for %%s in (%service_list%) do (
echo 停止服务:%%s
net stop %%s /y >nul 2>&1
if !errorlevel! equ 0 (echo 成功) else (echo 失败/已停止)
)
) elseif"%opt%"=="3" (
for %%s in (%service_list%) do (
echo 重启服务:%%s
net stop %%s /y >nul 2>&1
timeout /t 2 /nobreak >nul
net start %%s >nul 2>&1
if !errorlevel! equ 0 (echo 成功) else (echo 失败)
)
) elseif"%opt%"=="4" (
for %%s in (%service_list%) do (
echo 设置%%s为自动启动:
sc config %%s start= auto >nul 2>&1
if !errorlevel! equ 0 (echo 成功) else (echo 失败)
)
) else (
echo 输入错误,请重新运行!
)
echo 操作完成!
pause
-
service_list 可替换为你的业务服务(如 Tomcat、MySQL80); -
重启服务时增加 timeout 延迟,避免停止后立即启动导致的资源占用问题; -
sc config 是设置服务启动类型的核心命令(auto = 自动,demand = 手动,disabled = 禁用)。
@echo off
chcp 65001 >nul 2>&1
setlocal enabledelayedexpansion
:: 自定义配置
set"monitor_disk=C:" :: 要监控的磁盘
set"warning_threshold=10" :: 剩余空间低于10GB时预警
set"temp_paths=%temp% C:\Windows\Temp" :: 要清理的临时目录
set"log_paths=C:\Windows\Logs\*.log" :: 要清理的日志文件
echo ==================== 磁盘空间监控与清理 ====================
:: 获取磁盘剩余空间(单位:GB)
for /f "tokens=3" %%a in ('dir %monitor_disk% /-c ^| findstr /i "可用字节"') do (
set"free_space=%%a"
:: 转换为GB(1GB=1024*1024*1024=1073741824)
set /a free_space_gb=!free_space!/1073741824
)
echo %monitor_disk% 剩余空间:!free_space_gb! GB
if !free_space_gb! lss %warning_threshold% (
echo 警告:%monitor_disk% 剩余空间低于 %warning_threshold%GB,开始清理...
:: 清理临时文件
echo 1. 清理临时文件...
for %%p in (%temp_paths%) do (
del /f /s /q "%%p\*.*" >nul 2>&1
rd /s /q "%%p" >nul 2>&1
md "%%p" >nul 2>&1
)
:: 清理日志文件
echo 2. 清理日志文件...
del /f /s /q %log_paths% >nul 2>&1
:: 重新获取剩余空间
for /f "tokens=3" %%a in ('dir %monitor_disk% /-c ^| findstr /i "可用字节"') do (
set"new_free_space=%%a"
set /a new_free_space_gb=!new_free_space!/1073741824
)
echo 清理完成!%monitor_disk% 剩余空间:!new_free_space_gb! GB
) else (
echo 磁盘空间正常,无需清理。
)
pause
-
阈值单位为 GB,可根据服务器配置调整(如数据库服务器可设为 20GB); -
清理临时文件时先删除再重建目录,避免权限问题; -
可扩展 log_paths 增加业务日志目录(如 D:\Tomcat\logs)。
@echo off
chcp 65001 >nul 2>&1
:: 自定义配置
set"task_name=服务器每日巡检" :: 任务名称
set"task_script=C:\Scripts\Server_Check.bat" :: 要执行的脚本路径
set"task_time=00:00" :: 执行时间(24小时制)
set"task_frequency=daily" :: 执行频率(daily=每日,weekly=每周)
echo ==================== 定时任务管理 ====================
echo 请选择操作:
echo1. 创建定时任务
echo2. 删除定时任务
echo3. 查询所有定时任务
set /popt=请输入数字(1-3):
if"%opt%"=="1" (
echo 创建定时任务:%task_name%
schtasks /create /tn"%task_name%" /tr"%task_script%" /sc %task_frequency% /st %task_time% /ru"SYSTEM" /rl HIGHEST /f
if %errorlevel% equ 0 (
echo 任务创建成功!执行时间:每日 %task_time%
) else (
echo 任务创建失败,请检查脚本路径或权限!
)
) elseif"%opt%"=="2" (
echo 删除定时任务:%task_name%
schtasks /delete /tn"%task_name%" /f
if %errorlevel% equ 0 (
echo 任务删除成功!
) else (
echo 任务删除失败,可能任务不存在!
)
) elseif"%opt%"=="3" (
echo 服务器所有定时任务:
schtasks /query /fo table /v
) else (
echo 输入错误,请重新运行!
)
pause
-
/ru "SYSTEM" 以系统权限执行任务,避免权限不足; -
/rl HIGHEST 提升任务执行权限,适配需要管理员权限的脚本; -
执行频率可改为 weekly(每周)、monthly(每月),或 onstart(开机执行)。
@echo off
chcp 65001 >nul 2>&1
echo ==================== 服务器重启/关机 ====================
echo 警告:此操作会关闭服务器所有进程,请确认已保存数据!
echo 请选择操作:
echo1. 延迟重启(默认5分钟)
echo2. 立即重启
echo3. 延迟关机(默认5分钟)
echo4. 立即关机
echo5. 取消操作
set /popt=请输入数字(1-5):
if"%opt%"=="1" (
set /p delay=请输入延迟分钟数(默认5):
if not defined delay set delay=5
echo 服务器将在 %delay% 分钟后重启...
shutdown /r /t %delay%*60 /c"服务器计划重启"
) elseif"%opt%"=="2" (
echo 确认立即重启?(Y/N)
set /pconfirm=:
if /i "%confirm%"=="Y" (
shutdown /r /t 0 /c"服务器立即重启"
) else (
echo 操作取消!
)
) elseif"%opt%"=="3" (
set /p delay=请输入延迟分钟数(默认5):
if not defined delay set delay=5
echo 服务器将在 %delay% 分钟后关机...
shutdown /s /t %delay%*60 /c"服务器计划关机"
) elseif"%opt%"=="4" (
echo 确认立即关机?(Y/N)
set /pconfirm=:
if /i "%confirm%"=="Y" (
shutdown /s /t 0 /c"服务器立即关机"
) else (
echo 操作取消!
)
) elseif"%opt%"=="5" (
echo 操作已取消!
) else (
echo 输入错误,请重新运行!
)
:: 取消重启/关机的命令(如需取消,执行:shutdown /a)
echo 提示:如需取消操作,可执行命令:shutdown /a
pause
-
/t 参数为延迟秒数(需转换为分钟 ×60); -
/c 可添加备注,方便在服务器日志中查看重启 / 关机原因; -
shutdown /a 可取消未执行的重启 / 关机任务,建议保存为单独的 Cancel_Shutdown.bat。
@echo off
chcp 65001 >nul 2>&1
echo ==================== 远程桌面配置 ====================
echo 请选择操作:
echo1. 开启远程桌面
echo2. 关闭远程桌面
echo3. 修改远程桌面端口(默认3389)
set /popt=请输入数字(1-3):
if"%opt%"=="1" (
echo 开启远程桌面...
regadd"HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f
:: 开放防火墙3389端口
netsh advfirewall firewall add rule name="远程桌面3389" dir=in action=allow protocol=TCP localport=3389 /f
echo 远程桌面已开启,防火墙已放行3389端口!
) elseif"%opt%"=="2" (
echo 关闭远程桌面...
regadd"HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 1 /f
:: 删除防火墙规则
netsh advfirewall firewall delete rule name="远程桌面3389" protocol=TCP localport=3389 /f
echo 远程桌面已关闭!
) elseif"%opt%"=="3" (
set /p new_port=请输入新的远程桌面端口:
echo 修改远程桌面端口为 %new_port%...
:: 修改注册表端口
regadd"HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber /t REG_DWORD /d %new_port% /f
:: 开放新端口防火墙
netsh advfirewall firewall add rule name="远程桌面%new_port%" dir=in action=allow protocol=TCP localport=%new_port% /f
:: 删除旧端口规则
netsh advfirewall firewall delete rule name="远程桌面3389" protocol=TCP localport=3389 /f
echo 端口修改完成!需重启服务器生效(执行:shutdown /r /t 60)
) else (
echo 输入错误,请重新运行!
)
pause
-
远程桌面的核心注册表项是 fDenyTSConnections(0 = 开启,1 = 关闭); -
修改端口后必须重启服务器才能生效; -
建议将 RDP 端口改为非 3389,提升服务器安全性。
@echo off chcp 65001 >nul set logdir=ServerLogs_%date:~0,4%%date:~5,2%%date:~8,2% md %logdir% wevtutil epl System %logdir%\System.evtx wevtutil epl Security %logdir%\Security.evtx wevtutil epl Application %logdir%\Application.evtx echo 日志已导出到 %logdir% pause
2. 本地用户批量查看/锁定/解锁文章源自网吧系统维护-https://www.58pxe.com/12909.html
@echo off chcp 65001 >nul echo === 本地用户列表 === net user echo. set /p user=输入要操作的用户名: echo1 锁定 2 解锁 3 重置密码为 123456 set /popt=选择: if %opt%==1 net user %user% /active:no if %opt%==2 net user %user% /active:yes if %opt%==3 net user %user% 123456 echo 操作完成 pause
3. 本地管理员权限审计(查谁是管理员)文章源自网吧系统维护-https://www.58pxe.com/12909.html
@echo off chcp 65001 >nul echo === 本机管理员组 === net localgroup administrators pause
4. 进程占用高CPU/内存一键定位文章源自网吧系统维护-https://www.58pxe.com/12909.html
@echo off chcp 65001 >nul echo 占用CPU最高的进程: tasklist /v /folist | findstr /i "进程名 CPU 内存" echo. echo 已将进程信息保存到 process.txt tasklist /v > process.txt pause
5. IIS 服务一键重启(网站挂了常用)文章源自网吧系统维护-https://www.58pxe.com/12909.html
@echo off iisreset /stop timeout /t 2 /nobreak iisreset /start echo IIS 已重启 pause
6. 查看所有开机自启项(排查木马、卡顿)文章源自网吧系统维护-https://www.58pxe.com/12909.html
@echo off chcp 65001 >nul echo === 开机启动项 === wmic startup get caption,command pause
7. 系统更新服务开关(解决服务器卡慢)文章源自网吧系统维护-https://www.58pxe.com/12909.html
@echo off echo1 禁用自动更新 echo2 启用自动更新 set /popt=输入选择: if %opt%==1 ( sc config wuauserv start= disabled net stop wuauserv ) if %opt%==2 ( sc config wuauserv start= auto net start wuauserv ) echo 完成 pause
8. 共享文件夹查看/删除文章源自网吧系统维护-https://www.58pxe.com/12909.html
@echo off chcp 65001 >nul echo === 本机所有共享 === net share echo. set /p share=输入共享名(如C$)删除: net share %share% /delete pause
9. 服务器时间同步(解决时间错误导致的认证失败)文章源自网吧系统维护-https://www.58pxe.com/12909.html
@echo off w32tm /config /manualpeerlist:"time.windows.com" /syncfromflags:manual /reliable:yes /update w32tm /resync echo 时间已同步 pause
10. 组策略强制刷新(改策略后必用)文章源自网吧系统维护-https://www.58pxe.com/12909.html
@echo off gpupdate /force echo 组策略已刷新 pause
11. 清理系统垃圾(安全版,不删业务文件)文章源自网吧系统维护-https://www.58pxe.com/12909.html
@echo off del /f /s /q %temp%\*.* del /f /s /q C:\Windows\Temp\*.* del /f /s /q C:\Windows\Prefetch\*.* echo 清理完成 pause
12. 查看本机所有开放端口+PID文章源自网吧系统维护-https://www.58pxe.com/12909.html
@echo off netstat -ano | findstr "LISTENING" pause
版权声明:文章图片资源来源于网络,如有侵权,请留言删除!!!


评论