背景

昨儿开会,经理打算在公司统一部署PowerShell DSC,当然一个前提是把所有Windows 服务器的PS版本都升级到5.1的版本。现在公司的Windows服务器包括了windows 2008 R2, Windows 2012, Windows2012 R2和Windows 2016。

目标

所有的服务器都需要安装WMF5.1的补丁文件

挑战

WMF5.1根据操作系统的不同,对应了不同的KB版本,分别针对Windows 2008 R2, Windows 2012和 Windows 2012R2 形成了三个版本。windows 2016自带 PS5.1,就无需关注了。

解决方案:

方案1(windows2012和windows2012R2)

对于 Windows 2012和 Windows 2012 R2,这个问题其实很容易解决。他们分别对应的版本是 KB3191564 和 KB3191565, 这两个KB已经在windows update catalog 的网站上了,我们需要做的就是直接导入WSUS即可。

打开WSUS的服务器

统一部署 PowerShell 5.1_第1张图片

Actions 里面选择 Import Updates

统一部署 PowerShell 5.1_第2张图片

自动跳转到下载网页,选择安装ActiveX
统一部署 PowerShell 5.1_第3张图片

搜索对应的KB文件,添加到basket
统一部署 PowerShell 5.1_第4张图片

勾选导入WSUS
统一部署 PowerShell 5.1_第5张图片

下载完成
统一部署 PowerShell 5.1_第6张图片

然后在WSUS里面搜索下载的KB,批准安装即可。
统一部署 PowerShell 5.1_第7张图片

方案2(windows2008R2)

对于windows2008R2 来说,他不支持WSUS直接安装WMF5.1,那么怎么处理呢?我们可以通过传统的组策略+脚本的方式安装。

安装的方式有很多,豆子这次使用PowerShell开机脚本安装。网上有很多现成的安装脚本,豆子就不重复造轮子了,下载一个现成的。
https://gallery.technet.microsoft.com/scriptcenter/PowerShell-to-Install-70009e38

这个脚本可以安装msu文件和exe文件,其实本质就是通过调用wusa.exe。
创建一个新的gpo文件,配置如下。里面那个install-update.ps1就是我下载的现成脚本,后面的参数指定kb名字和安装路径。安装路径一定要确保domain computer有访问的权限,否则会报错access denied。

统一部署 PowerShell 5.1_第8张图片

把这个组策略分配到对应的OU上,重启Windows 2008 R2的服务器,经过漫长的等待,大概15分钟左右,测试一下powershell的版本,发现已经成功更新了。

统一部署 PowerShell 5.1_第9张图片