欢迎光临
我们一直在努力

Windows 运维自动化|PowerShell 批量服务巡检 + 磁盘监控脚本(超实用)

1. 前言

做 Windows 运维的同学都用过批处理(.bat)做自动化,但批处理有明显短板:逻辑复杂、不支持复杂计算、无原生邮件告警、容错性差。

而 PowerShell 作为 Windows 原生的脚本语言,完美解决这些问题:

  • 原生支持 Windows 所有管理接口
  • 轻松实现邮件 / 弹窗告警
  • 支持复杂逻辑判断和数值计算
  • 兼容所有 Windows 系统(Win7 需安装 PowerShell 3.0+)

今天分享 3 个我在生产环境长期使用的 PowerShell 自动化脚本,覆盖服务巡检、磁盘监控、日志清理三大核心场景,复制就能用,注释超详细。

2. PowerShell 优势(对比批处理)

功能
批处理(.bat)
PowerShell
服务管理 仅支持基础启动 / 停止 支持状态查询、依赖分析、权限控制
数值计算 仅支持 32 位整数(易溢出) 支持超大数值、浮点数、精准计算
告警能力 无原生支持(需调用第三方) 原生支持邮件、弹窗、日志告警
容错性 出错直接终止 支持 try/catch 异常捕获
可读性 逻辑混乱,注释有限 类编程语法,结构清晰

3. 实战脚本 1:服务状态巡检(自动启动 + 邮件告警)

适用场景

定时巡检关键服务(如 SQL Server、IIS、Redis、计划任务),异常自动启动,启动失败则发送邮件告警,避免服务宕机无人知晓。

完整脚本(带详细注释)

powershell

<#
.SYNOPSIS
Windows服务状态巡检脚本(带邮件告警)
.AUTHOR
一线Windows运维工程师
.VERSION
4.0(优化版)
#>

# ========== 配置区域(请根据实际环境修改)==========
$services = @(\”Spooler\”, \”SQLBrowser\”, \”MSSQLSERVER\”, \”Schedule\”) # 要检查的服务名列表
$logDir = \”C:\\OpsLogs\” # 日志存储目录(建议不要用E:,除非确保存在)
$smtpServer = \”smtp.qq.com\” # SMTP服务器地址
$smtpPort = 587 # 端口(465通常带SSL,25不带)
$smtpUser = \”yourqqemail@qq.com\” # 发件邮箱
$smtpPwd = \”fdaadadfaf\” # 邮箱授权码(非登录密码)
$toEmail = \”yourqqemail@qq.com\” # 收件人邮箱
$enableMail = $true # 是否启用邮件告警
# =================================================

# 初始化:设置编码和错误处理
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
$PSDefaultParameterValues[\’*:Encoding\’] = \’utf8\’
$ErrorActionPreference = \’Stop\’

# 日志文件路径
$logDate = Get-Date -Format \’yyyyMMdd\’
$logFile = \”ServiceCheck_$logDate.log\”
$logPath = Join-Path -Path $logDir -ChildPath $logFile

# 函数:写入日志(自动添加时间戳)
function Write-Log {
param([string]$Message, [string]$Color = \’Gray\’)
$timestamp = Get-Date -Format \’yyyy-MM-dd HH:mm:ss\’
$logEntry = \”$timestamp – $Message\”
# 写入文件(UTF-8)
$logEntry | Out-File -FilePath $logPath -Append -Encoding utf8
# 控制台输出(带颜色)
Write-Host $logEntry -ForegroundColor $Color
}

# 函数:发送邮件
function Send-AlertMail {
param(
[string]$Subject,
[string]$Body
)
if (-not $enableMail) { return }
try {
# 强制使用 TLS 1.2

赞(0)
未经允许不得转载:171主机测评 » Windows 运维自动化|PowerShell 批量服务巡检 + 磁盘监控脚本(超实用)
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址