公司内部数百台Windows电脑,如何用Ansible批量安装软件并配置安全基线?

2026-07-09

兄弟们,干IT的都知道,公司里Windows电脑一多,运维就变成体力活。昨天新来了20个实习生,每人要装Office、Chrome、7-Zip、VPN客户端,还得把SMBv1关了、密码策略改严格点。以前咋办?要么拿U盘一个个跑,要么搞个域策略慢慢等。几百台机器,光配安全基线就能把人搞疯。

今天咱聊聊怎么用Ansible这个“遥控器”搞定这事儿。别一听“Ansible”就觉得高大上,其实它就是个指挥中心,你写个剧本(Playbook),它就能远程指挥所有Windows电脑干活,而且不需要在被控电脑上装任何客户端——它走的是WinRM,相当于Windows自带的“远程管理通道”。

先搭个“指挥中心”

你得找一台Linux或者Windows的机器作为控制节点,装上Ansible。然后让所有Windows电脑打开WinRM服务。这一步其实很简单:在每台Windows上跑个PowerShell脚本,把WinRM监听端口5985(HTTP)或5986(HTTPS)打开就行。你可能会问:“这不是还得手动跑脚本吗?”别急,你可以先找一台“样板机”配好,然后导出一个组策略或通过系统镜像批量下发。或者用Ansible的winrm模块在首次连接时配置——前提是你要有管理员账户。

打个比方:WinRM就像Windows的“门铃”,Ansible按门铃,Windows就得开门听指令。

写个安装软件的“剧本”

Ansible里做Windows软件安装,最爽的模块是win_chocolatey。Chocolatey就是Windows版的yum或apt,一个命令行包管理器。比如要装7-Zip,Playbook里写:

- name: 安装7-Zip
  win_chocolatey:
    name: 7zip
    state: present

跑一下,所有电脑上7-Zip就装好了,静默安装,用户甚至不知道。如果公司内部有安全策略,不让连外网,你可以搭一个内部Chocolatey源,把软件包放进去,一样用。

除了Chocolatey,还有win_package模块,适合安装那种exe/msi,比如:

- name: 安装企业版Office
  win_package:
    path: '\\fileserver\soft\office2019.iso'
    arguments: '/adminfile office.msp'
    state: present

配置安全基线,就像改注册表开关

安全基线那些事儿,比如禁用SMBv1、关闭445端口、设置密码长度、开启防火墙日志……本质上都是改注册表或服务。Ansible对应的模块有win_regeditwin_servicewin_firewall

举个例子,禁用SMBv1:

- name: 禁用SMBv1服务
  win_service:
    name: lanmanserver
    state: stopped
    start_mode: disabled
- name: 删除SMBv1注册表键
  win_regedit:
    path: HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
    name: SMB1
    data: 0
    type: dword
    state: present

再比如强制要求密码长度至少10位:

- name: 设置密码长度最小值为10
  win_security_policy:
    name: MinimumPasswordLength
    value: 10

这些操作幂等性很好——跑一次是这效果,跑一百次还是这效果,不会重复设置。你可以在新机器入职时跑一遍,也可以定期全部刷新一遍。

真实场景:新员工入职自动化

想象一下:HR发来10个新员工名字和电脑MAC地址,你用Excel登记后,Ansible自动完成以下动作:

  1. 把电脑加入AD域(如果你有域环境)
  2. 安装标准软件包(Office、浏览器、企业软件)
  3. 配置安全基线(关闭RDP不安全认证、开启Windows Defender实时保护)
  4. 推送公司内部证书或WiFi配置
  5. 创建本地管理员账号(如果不用域)

整个过程你只需要维护一份Playbook,跑一条ansible-playbook -i hosts.ini new_employee.yml,喝杯咖啡,搞定。

踩坑提醒

总结

一句话:Ansible让Windows运维从“搬砖”变成“写剧本”。几百台机器,你只需要维护几个YAML文件,想装啥就装啥,想锁啥就锁啥。而且你还能把这个剧本放到Git里做版本管理,新人来了也敢让他跑。

当然,具体怎么搞,还有更多细节——比如如何批量初始化WinRM、如何用Ansible Tower做可视化派发、如何与SCCM配合。想了解更完整的方案?更多方案可访问 itfangan.com,里面有不少现成的实战案例和脚本,直接拿来用就行。

兄弟们,别再用U盘一个个装了,该换个姿势爽一把了。