如何批量停止多台AWS Windows服务器上的IIS以进行维护
批量停止多台AWS EC2 Windows服务器IIS的方法
方案1:AWS Systems Manager Run Command(推荐)
这是AWS原生的批量管理工具,无需开放RDP/WinRM端口,安全性更高:
- 确认所有目标EC2实例已安装SSM Agent(Windows Server 2016及以上默认预装,自定义镜像需手动安装)
- 为实例附加IAM角色,权限需包含
ssm:SendCommand、ssm:ListCommands等,最简配置可直接使用AmazonSSMFullAccess托管策略 - 登录AWS控制台,进入Systems Manager > Run Command,选择文档
AWS-RunPowerShellScript - 在命令输入框中填入停止IIS的PowerShell命令:
Stop-Service -Name W3SVC -Force - 选择目标实例:可手动勾选,或通过标签筛选(建议给所有Web服务器统一添加标签如
Env:Production、Role:WebServer,方便批量选择) - 点击执行,可实时查看每台实例的命令执行状态和结果
方案2:PowerShell远程执行(适合已有WinRM配置的环境)
如果已经配置了WinRM远程管理,可直接用本地PowerShell批量操作:
- 确保EC2安全组开放WinRM端口(建议用5986 HTTPS,避免明文传输),并配置实例的WinRM服务允许远程连接
- 在本地PowerShell中定义目标实例IP列表:
$targetInstances = @("192.168.1.10", "192.168.1.11", "192.168.1.12") - 添加远程主机到信任列表(生产环境建议用证书验证,以下为测试/内网环境简化配置):
Set-Item WSMan:\localhost\Client\TrustedHosts -Value $targetInstances -Concatenate - 批量执行停止IIS命令:
Invoke-Command -ComputerName $targetInstances -ScriptBlock { Stop-Service -Name W3SVC -Force } -Credential (Get-Credential) - 说明:若所有实例使用统一管理员账号,可提前存储凭证避免重复输入
方案3:自动化定期执行(适合每周固定维护任务)
结合Lambda和EventBridge实现每周自动批量停止IIS:
- 创建Lambda函数(推荐用Python或PowerShell运行时),核心逻辑:
- 通过EC2 API筛选带指定标签的目标实例
- 调用SSM SendCommand接口,发送停止IIS的PowerShell命令
- 为Lambda配置IAM角色,权限需包含
ec2:DescribeInstances、ssm:SendCommand、ssm:GetCommandInvocation等 - 配置EventBridge规则,设置每周固定触发时间(如每周日凌晨2点),触发Lambda函数执行
内容的提问来源于stack exchange,提问作者SVaidya
相关产品推荐
相关产品推荐

