虽然目前大部分服务器都是Linux,大部分运维对Linux常用的命令已经很熟悉了。但是免不了还有个别的Windows服务器, 所以掌握一些高效的Windows运维脚本对于提升工作效率至关重要。
Windows运维常用的10个脚本
在Windows运维工作中,脚本的使用可以极大提高工作效率和处理问题的灵活性。
远程桌面快捷连接 :通过批处理文件,实现一键快速打开多个远程桌面连接,提高远程管理效率。
start mstsc /v:192.168.1.100
start mstsc /v:192.168.1.101
定时关机脚本 :用于在指定时间自动执行关机操作,适用于需要定时维护的服务器。
shutdown /s /t 600
端口状态检查 :一键检查服务器上常用端口的状态,确保服务正常运行。
netstat -ano | findstr "端口号"
# 找到进程号就可以干掉程序
taskkill /T /F /PID 进程号
查找大文件 :查找Windows服务器上的大文件。
@echo off
setlocal enabledelayedexpansion
:: 设置要搜索的目录,这里以C盘为例
set "searchPath=C:\"
:: 设置文件大小阈值,这里以100MB为例
set "sizeThreshold=100 MB"
:: 设置输出文件
set "outputFile=large_files.txt"
:: 清空输出文件
echo. > "%outputFile%"
:: 搜索并记录大文件
echo 正在搜索大于 %sizeThreshold% 的文件...
for /r "%searchPath%" %%A in (*) do (
set "size=%%~zA"
if !size! GTR 104857600 (
echo %%A >> "%outputFile%"
)
)
:: 显示结果
echo 大文件搜索完成,结果保存在 "%outputFile%"
type "%outputFile%"
:: 暂停查看结果
pause
网络配置修改 :修改网络配置,如IP地址和DNS,以适应不同的网络环境。
netsh interface ip set address "本地连接" static 192.168.1.100 255.255.255.0 192.168.1.1
netsh interface ip set dns "本地连接" static 8.8.8.8
net start "服务名"
net stop "服务名"
日志清理 :自动清理特定目录下的日志文件,释放磁盘空间。
@echo off
:: 设置日志文件存放的目录
set LOG_DIR=C:\Windows\System32\Winevt\Logs
:: 设置要清理的日志文件的天数,例如30天
set DAYS_OLD=30
:: 使用forfiles命令查找并删除超过30天的日志文件
forfiles /p %LOG_DIR% /s /d -%DAYS_OLD% /c "cmd /c del /q /f @path"
系统信息收集 :收集系统基本信息,如CPU、内存使用情况,方便问题排查。
@echo off
echo Windows服务器性能统计开始:
:: 获取CPU信息
echo.
echo CPU信息:
wmic cpu get name,loadpercentage
echo.
:: 获取内存信息
echo.
echo 内存信息:
wmic os get freephysicalmemory,totalvisiblememorysize
echo.
:: 获取硬盘信息
echo.
echo 硬盘信息:
for /f "tokens=1-4 delims= " %%a in ('wmic logicaldisk get name^, freespace^, size') do (
echo %%a:
echo 可用空间: %%b MB
echo 总大小: %%c MB
echo 使用率: %%d%%
echo.
)
echo Windows服务器性能统计结束。
磁盘空间检查 :检查磁盘空间使用情况,预防磁盘满导致的服务中断。
@echo off
setlocal enabledelayedexpansion
:: 设置检查的磁盘,例如C盘
set DISK=C:
:: 设置警告阈值,单位为MB,例如设置为1000MB
set WARNING_THRESHOLD=1000
:: 获取磁盘可用空间
for /f "tokens=2 delims=:" %%a in ('fsutil volume diskfree %DISK% ^| find "可用字节"') do (
set SPACE=%%a
set SPACE=!SPACE:~0,-3!
)
:: 检查磁盘空间是否低于阈值
if !SPACE! LSS %WARNING_THRESHOLD% (
echo 警告:磁盘%DISK%的可用空间低于%WARNING_THRESHOLD%MB!
echo 当前可用空间:!SPACE!MB
echo 请及时清理磁盘空间以避免潜在的服务中断。
) else (
echo 磁盘%DISK%的可用空间为:!SPACE!MB,当前空间充足。
)
endlocal
MySQL数据备份 :Windows服务器备份MySQL脚本
@echo off
echo 设置MySQL数据库的连接信息
set host=127.0.0.1
set port=3306
set user=root
set pass=yourpassword
echo 设置要备份的MySQL数据库名称
set dbname=yourdatabasename
echo 获取当天的日期格式,例如:20240903235959
set backup_date=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%
echo 设置备份文件的路径
set backupfile=D:\mysql\backup\%dbname%-%backup_date%.sql
echo 使用mysqldump对指定的MySQL进行备份
"C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqldump" -h%host% -P%port% -u%user% -p%pass% -c --add-drop-table %dbname% > %backupfile%
echo 删除过期文件,这里是超过30天就删除
forfiles /p D:\mysql\backup /s /m *.sql /d -30 /c "cmd /c del @file /f"
这些脚本在日常运维工作中扮演着重要角色,它们不仅能够提升工作效率,还能在紧急情况下提供快速响应。掌握这些脚本的编写和使用,对于Windows运维工程师来说是一项宝贵的技能。
近期文章: