我们有一个非常紧张的中断窗口,对于我们的许多系统,必须以正确的顺序重新启动服务器。因此,我想编写我们的更新脚本。
我曾尝试使用Microsoft Script Repository 中的这个Powershell 脚本,但是,对我来说它不能远程工作,并不总是使用 Invoke-Command 工作,它开始安装然后返回而不等待安装完成。我希望在安装完成后重新启动每个系统,这很难在没有安装阻塞或状态信息阻塞的情况下编写脚本。在花了太多时间试图让 CCM_SoftwareUpdate 和 CCM_SoftwareUpdatesManager WMI 类做我需要的事情之后,我想是时候问问其他人可能如何处理类似的情况了。
我的一个朋友说他的公司通过使用Shavlik解决了这个问题,不幸的是,这不是一个选择。
我们使用 SCCM 2012 并混合使用 2003、2008 和 2012 服务器。
scripting configuration-management windows-update sccm sccm-2012
我有一个自签名的 .cer 证书,我需要将它部署到大约 1000 台机器上,运行从 Windows XP 和 Server 2003 到 Windows 7 和 Server 2008 R2 的各种 Windows 版本。
SCCM 是我们的常规部署方法,并尝试以几种不同的方式部署这些方法,但遇到了这样一个事实,即并非所有必需的工具都在所有操作系统上可用,或者我只是在自动部署中收到错误消息而我没有没有看到手动运行它们。
我发现的最跨平台友好的方法是从安装了管理工具的 XP SP3 副本中获取 CertUtil.exe 和 certadm.dll 的副本,并将其放在与 .cer 文件相同的文件夹中,然后在批处理文件中使用以下命令行:
certutil.exe -addstore TrustedPublisher cert.cer
certutil.exe -addstore root cert.cer
Run Code Online (Sandbox Code Playgroud)
手动运行批处理文件可以很好地工作,但是自动运行它会出现各种错误。
有没有更好的方法来跨 Windows 平台执行此操作?
无论如何,是否可以阻止 Windows 7 在更新后执行强制重启?这不是Windows Update发生的重启;这是强制重启,显示“需要系统重启”对话框,并提供不可避免的重启倒计时。我已经明白这些重启是由于 SCCM 和管理员策略而发生的。我们的系统管理员不太可能更改这些策略,因此我正在寻找其他方法来更好地处理重启。
虽然我理解及时更新的必要性,但在我的工作环境中,只要更新被推出,这些更新就会发生,这通常是在我做一些重要的事情的过程中。我不想完全阻止这些更新的发生;我只是想推迟或暂停他们,直到我准备好了。
需要通过 SCCM 2012 推出最新的 Lenovo ThinkVantage System Update (v5.06.0034)。我希望此更新取代所有较低版本,为此我需要静默卸载那些以前的版本。
通常,可以通过使用带有 /quiet 或 /qn 参数的 TVSU 的 UninstallString 来做到这一点:
MsiExec.exe /X{25C64847-B900-48AD-A164-1B4F9B774650} /qn
Run Code Online (Sandbox Code Playgroud)
从技术上讲,这是有效的。但是,Lenovo 安装程序会在卸载后询问用户是否要删除程序文件夹,这需要用户输入(是或否)。因此,当卸载以静默方式启动时,安装程序将无限期挂起,因为用户无法与安装程序交互。
有没有办法为此安装程序提供 unattend.xml 或者有人知道我可以与联想的 System Update 安装程序 .exe 一起使用的特定命令开关吗?
编辑
正如@kce 建议的那样(谢谢!),我在卸载过程中打开了 msiexec 的日志记录级别。虽然我找不到任何可能通过 msiexec 手动传递的属性,但这是安装程序创建“删除文件夹?”对话框的部分,以及用户按下是时调用的函数。也许它可以帮助任何人:
MSI (s) (80!84) [10:52:44:046]: Creating MSIHANDLE (77) of type 790531 for thread 3716
InstallShield 10:52:44: Registering Msi Server...
MSI (s) (80!84) [10:52:44:046]: Closing MSIHANDLE (77) of type 790531 for thread 3716
MSI (s) (80!84) [11:03:27:239]: Creating MSIHANDLE (78) of type 790531 for …Run Code Online (Sandbox Code Playgroud) 有没有办法指定集合查询 AD 中的特定安全组,或者它只能查询通过发现方法放置在它的数据库中的机器?
我有几个关于使用 SCCM 在 Windows 笔记本电脑上为用户部署软件的问题:
我正在测试我需要在组织中移动的机器的一些网络问题,这使机器更改其 ip。
SCCM需要更新这个ip(图中高亮部分)才能联系到机器,问题是我的环境太大了,运行一个完整的机器发现需要4个多小时。
有通过powershell或其他工具更新机器ip的更快方法吗?
在维护时段内,当我们向 Windows Server 2016 虚拟机应用最新、最好的补丁时,我们注意到,偶尔(随着时间的推移,这种情况会更常见)Cumulative Update(CU)补丁最终会被卡住,或者需要几个小时才能应用。我们认为,这些长时间的原因是服务器上被取代的更新的存在和数量。
那么这就留下了一个问题 - 为什么这些被取代的更新会累积并且没有被清理?我们如何清理它们?
我是 SCCM 新手,所以也许我的问题没有任何意义,但请耐心等待。
如果我理解正确,用户将成为代表软件包的 AD 组的成员。如果用户成为 AD 组“Winzip”的成员,SCCM 会检测到这一点并将 Winzip 包分发到正确的机器。
如果用户成为 AD 组 'Sales' 的成员,而该组又是 AD 组 'Winzip' 的成员怎么办?所以'User' memberOf 'Sales' memberOf 'Winzip'。SCCM 会检测到用户应该获取 Winzip 包吗?或者我需要在这种情况下做一些额外的事情吗?
亲切的问候,罗纳德·威尔登伯格
我们目前正在测试一个环境,在该环境中我们推出带有 SCCM 的个人电脑。我们已经遇到了一段时间的问题,我们部署 XP 的计算机没有显示为“在域中”或 SCCM 客户端被识别。我们仍然不知道问题是什么,但症状之一(可能是原因)是 BITS 服务未启动。
我尝试通过创建一个将其设置为自动的 GPO 来解决这个问题,但是在我上次部署之后,我注意到没有再次添加一台计算机。我检查了电脑,瞧,该服务仍设置为手动并已停止。没有应用 GPO,尽管计算机肯定在域中(是的,在正确的 OU 中)。
有谁知道是否应该在计算机启动后应用 GPO 之前已将其添加到域中?我会说他们是,但现在我怀疑一切......
sccm ×10
windows ×2
certificate ×1
group-policy ×1
groups ×1
powershell ×1
sccm-2012 ×1
sccm-2012-r2 ×1
scripting ×1
silent ×1
uninstall ×1
windows-7 ×1
windows-xp ×1
wsus ×1