windows server服务器常的管理脚本

admin 服务器评论5字数 8285阅读模式

windows server服务器常的管理脚本

一、通用前提
  1. 所有脚本保存为 .bat 格式时,编码选择「ANSI」(避免中文乱码);
  2. 执行前替换脚本中的「自定义参数」(如路径、服务名、阈值等);
  3. 关键操作建议先在测试环境验证,再部署到生产服务器。
二、Windows Server 核心管理脚本
1.服务器状态一键巡检(运维必备)
脚本功能:批量收集服务器硬件、系统、服务、磁盘、进程等核心信息,生成巡检报告,方便快速排查问题
@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
关键说明:
  • 涵盖系统、硬件、磁盘、服务、进程五大核心维度,是运维巡检的基础模板;
  • 可自定义「关键服务列表」(如替换为你的数据库、中间件服务名);
  • 报告按日期命名,便于归档对比。
2.服务批量管理(启动 / 停止 / 重启 / 设为自动)
脚本功能:针对服务器核心服务(如 IIS、数据库、远程桌面)批量操作,适合运维启停或故障恢复。
@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 = 禁用)。
3.磁盘空间监控与清理(预警 + 自动清理)
脚本功能:监控指定磁盘空间,低于阈值时预警,并自动清理临时文件、日志文件,适合防止服务器磁盘满溢。
@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)。
4.定时任务管理(创建 / 删除 / 查询)
脚本功能:快速创建服务器定时任务(如定时备份、定时巡检),无需手动打开「任务计划程序」。
@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(开机执行)。
5.服务器重启 / 关机(带确认 + 延迟)
脚本功能:安全重启 / 关机服务器,增加确认步骤和延迟,避免误操作,适合远程运维。
@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。
6.远程桌面配置(开启 / 关闭 / 修改端口)
脚本功能:快速配置远程桌面(RDP),无需手动打开「系统属性」,适合服务器初始化配置。
@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,提升服务器安全性。
我给你整理真正生产环境高频、你前面没拿到、但运维天天用的 Windows Server 实用脚本,全部 .bat 可直接运行,偏安全、日志、账户、IIS、组策略、系统加固这类刚需。
三、生产环境高频使用的 Windows Server 实用脚本
1. 系统日志一键导出(排查故障必备)
@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
文章源自网吧系统维护-https://www.58pxe.com/12909.html文章源自网吧系统维护-https://www.58pxe.com/12909.html
版权声明:文章图片资源来源于网络,如有侵权,请留言删除!!!
广告也精彩
admin
  • 本文由 发表于 2026年2月21日 11:12:48
  • 转载请务必保留本文链接:https://www.58pxe.com/12909.html
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: