當前位置: 妍妍網 > 碼農

曝光 !!! CTO私藏的10個Windows指令碼

2024-12-03碼農

雖然目前大部份伺服器都是Linux,大部份運維對Linux常用的命令已經很熟悉了。但是免不了還有個別的Windows伺服器, 所以掌握一些高效的Windows運維指令碼對於提升工作效率至關重要。

Windows運維常用的10個指令碼

在Windows運維工作中,指令碼的使用可以極大提高工作效率和處理問題的靈活性。

  1. 遠端桌面快捷連線 :透過批次檔,實作一鍵快速開啟多個遠端桌面連線,提高遠端管理效率。

start mstsc /v:192.168.1.100
start mstsc /v:192.168.1.101

  1. 定時關機指令碼 :用於在指定時間自動執行關機操作,適用於需要定時維護的伺服器。

shutdown /s /t 600

  1. 埠狀態檢查 :一鍵檢查伺服器上常用埠的狀態,確保服務正常執行。

netstat -ano | findstr "埠號"
# 找到行程號就可以幹掉程式
taskkill /T /F /PID 行程號

  1. 尋找大檔 :尋找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





  1. 網路配置修改 :修改網路配置,如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

6. 服務管理 :啟動或停止系統服務,如Web伺服器、資料庫服務等。

net start "服務名"
net stop "服務名"

  1. 日誌清理 :自動清理特定目錄下的日誌檔,釋放磁盤空間。

@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"

  1. 系統資訊收集 :收集系統基本資訊,如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伺服器效能統計結束。


  1. 磁盤空間檢查 :檢查磁盤空間使用情況,預防磁盤滿導致的服務中斷。

@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



  1. 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運維工程師來說是一項寶貴的技能。

近期文章: