我是一所高中的 IT 技术人员,拥有大约 1600 名学生、250 名员工和 800 多台主要运行 Windows 7 的客户端计算机。我们的团队由三名成员组成。我的老板似乎对一个有效的网络(几乎)感到满意,不一定是一个易于运行和维护的高效维护良好的网络。我的 IT 职业生涯还处于起步阶段,所以我无法跟上所有可用的不同端点管理解决方案的速度。
我正在寻找一种更好的方式来管理客户(部署软件、跟踪变更、库存等) 我喜欢 SCCM 2012 功能的外观,但案例研究似乎针对大型多站点基础设施而不是单个中型站点.
SCCM 适合中型单一站点还是针对更大的公司?我如何确定像 SCCM 这样的端点管理解决方案是否适合我们的组织?
编辑:感谢所有的帮助,我会看看 SCE 和 SCCM 并起草一些建议给我的老板/副主管
我们注意到我们的软件更新自动部署规则未能自动从Microsoft下载并应用本月的补丁,尽管它们已正确列在目录中。

自动部署规则将其最后一个错误代码列为0X87D20417,最后一个错误描述列为“自动部署规则下载失败”。手动重新运行规则会重现此错误。删除并重新创建自动部署规则也会重现相同的错误。
查看 SMS_RULE_ENGINE 日志显示以下错误:
Error Milestone 004 6/19/2013 3:42:21 PM SCCM.ad.example.com SMS_RULE_ENGINE 8706 Content download failed. Message: Failed to download one or more content files. Source: SMS Rule Engine.
Error Milestone 004 6/19/2013 3:42:07 PM SCCM.ad.example.com SMS_RULE_ENGINE 8706 Content download failed. Message: Failed to download one or more content files. Source: SMS Rule Engine.
Error Milestone 004 6/19/2013 2:45:44 PM SCCM.ad.example.com SMS_RULE_ENGINE 8706 Content download failed. Message: Failed to download one or more content files. …Run Code Online (Sandbox Code Playgroud) 它不时发生。我更新了一个包,需要更新分发点。我们有多个 DP,通常一切都很好,但是每隔一段时间,我们的主 DP 就无法更新包。

内容状态日志从不详细说明失败。我没有对管理点或 DP 的后端服务器访问权限,我只是 SCCM 管理员。我可以检查 SCCM 中的任何日志、运行报告以及所有内容,但我不知道在哪里查看。
过去我曾尝试在问题包上设置“断开用户与分发点的连接”设置,这两个子设置都为 0,但它对我们来说并不真正有效。一段时间后,问题似乎会自行消失,但有时需要几天时间。对于大多数(实际上是全部,但可能有一两个我忽略了),我们将客户端设置为“从分发点运行程序”在部署程序时,不确定这是否与它有关,或者根目录是什么原因是。
更新
我在报告中发现了更多信息,特别是All Status Messages for a Specific Package at a Specific Site查询。使用我的包 ID 进行查询,在 DP 更新再次失败后,我确实看到了一个突出的条目:
分发管理器无法处理包“配置更新”(包 ID = SOM00013)。
可能的原因:分发管理器无权访问包源目录或分发点。解决方案:验证分发管理器可以访问包源目录/分发点。
可能原因:包源目录包含长文件名的文件,路径总长度超过操作系统支持的最大长度。解决方案:减少为包定义的文件夹数量,缩短文件名,或考虑使用压缩实用程序捆绑文件。
可能的原因:站点服务器计算机或分发点上没有足够的可用磁盘空间。解决方案:验证站点服务器计算机和分发点上是否有足够的可用磁盘空间。
可能的原因:包源目录包含活动进程可能正在使用的文件。解决方案:关闭所有可能使用源目录中文件的进程。如果此故障仍然存在,请创建源目录的备用副本并更新包源以指向它。
出于简单的原因,我怀疑中间的两个原因
尽管我会尝试检查完整性,但源文件夹并没有那么深,无法包含 NTFS 的长文件名。
我可以将文件添加到DP就好了,所以这不是文件空间问题,其他包可以正常更新。
我没想到的是,第三个原因说源目录正在某处使用。无论如何,这会有什么不同?是不是只是将文件从文件共享复制到 SCCM DP 共享中?进一步让我循环 b/c 客户端甚至不访问源目录,它几乎只是 sccm 从中复制文件的暂存目录。
这只是留下了第一个原因,但这又回到了同样的事情:其他包可以很好地更新。
我终于在具有AllSigned执行策略的客户端上使用 PowerShell 检测脚本取得了成功。(提示:它在安装最新的服务包并使用Adam Meltzer 的解决方法后开始工作。)
现在使用 PowerShell 脚本进行应用程序检测是实用的,这让我想知道以下几点:
关于这个主题的文档很少。我为 SCCM PowerShell 检测脚本找到的最佳资源是这篇 Kloud 博客文章,但是,它对上下文问题保持沉默。
我们一直在处理带有集合的包(现在是应用程序)的所有定位逻辑。既然我们已经从 SCCM 2007 转移到 SCCM 2012 SP1,建议我们将该逻辑转移到应用程序模型并使用全局条件和要求实施它。这有许多积极的好处 - 集合纯粹用于分层或逻辑分组,我们在使用 Supercedence 时获得更无缝的应用程序部署,以及改进的检测逻辑。
我将使用 Adobe Flash Player 插件作为示例。我们只想将 Adobe Flash Player Plugin 部署到安装了 Firefox 的工作站。使用 SCCM 2007 Package-Program 模型,我们将基于 WQL 查询创建一个集合,其中包含安装了 Firefox 的所有工作站:
select * from SMS_R_System inner join SMS_G_System_SoftwareProduct
on SMS_G_System_SoftwareProduct.ResourceId = SMS_R_System.ResourceId
where SMS_G_System_SoftwareProduct.ProductName like "Mozilla Firefox"
Run Code Online (Sandbox Code Playgroud)
一旦我们创建了集合,我们就会针对它部署我们的包程序。我正在尝试使用应用程序的全局条件和要求逻辑复制相同的逻辑。我所有尝试构建基于 WQL 查询的全局条件都会导致wbemErrTypeMismatch错误 ( 2147749893 (0x80041005))。
既然最佳实践建议我们将目标逻辑与应用程序捆绑在一起,我们需要做的是创建一个适当的 WQL 查询全局条件,然后我们可以使用应用程序的需求来评估它。
让我们从 WQL 查询开始。我使用 Scriptomatic 来转储SMS_InstalledSoftware属于root\cimv2\sms命名空间的WMI 类中的所有内容。我有理由确信SMS_InstalledSoftware是在尝试评估是否安装了某些东西时运行查询的最佳位置,因为 Win32_Product 仅适用于 Windows Installer 安装的软件。
我找到以下与 Firefox 相关的对象:
ARPDisplayName: …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Start-CMSoftwareUpdateDeploymentcmdlet 将软件更新组部署到现有集合。
PS WHO:\> Start-CMSoftwareUpdateDeployment -SoftwareUpdateGroupName "Update Group - Microsoft Updates" -CollectionName `
Eval_OSUpdates -DeploymentType Required -SendWakeUpPacket $true -AllowRestart $true -PersistOnWriteFilterDevice $true `
-DownloadFromMicrosoftUpdate $true -DeploymentName "Evaluation Deployment - Update Group - Microsoft Updates" `
-UserNotification DisplayAll -RestartWorkstation $false -AllowUseMeteredNetwork $true
Run Code Online (Sandbox Code Playgroud)
给出了所有必需的参数,但是我在执行时收到以下错误:
Start-CMSoftwareUpdateDeployment : ConfigMgr Error Object:
instance of SMS_ExtendedStatus
{
Description = "One or more updates are present for which a EULA exists which hasn't been approved.";
ErrorCode = 1078462208;
File = "e:\\nts_sccm_release\\sms\\siteserver\\sdk_provider\\smsprov\\sspciassignment.cpp";
Line = 361;
Operation …Run Code Online (Sandbox Code Playgroud) 我正在使用具有软件更新点功能的 System Center Configuration Manager 2012;但是,在这种环境下,补丁必须严格手动进行,因为服务器重启需要由不同的人批准和安排;因此,我需要使用 ConfigMgr 的 SUP,就像使用具有自动批准但手动安装的普通 WSUS 服务器一样。
我创建了一些自动部署规则来自动下载和部署关键更新,并“尽快”安装;但是,我还配置了这些规则,以便在达到截止日期时不执行任何操作,并且即使需要也不执行系统重新启动:

此外,我已将设备集合配置为这些规则部署更新的位置没有任何有效的维护窗口。
但是,我遇到的情况与我预期的完全相反:只要 ADR 处理了新更新,软件中心就会自动将它们安装在所有系统上,随后计算机将重新启动。
为什么会这样?我是不是有什么问题,或者只是 ConfigMgr 2012 没有表现得像它应该的那样?
system-center configuration-management windows-update sccm sccm-2012
带有 KB4086143 修补程序汇总的 SCCM 1710,在 Windows Server 2012 R2 上运行,在同一服务器上配置了软件更新点和 WSUS。
SUP 和 WSUS 都没有配置为下载快速更新。客户端策略设置为不使用快速更新。
创建了一个“基准”软件更新组和部署包,其中正确地不包含快速更新。
创建了一个自动部署规则,这是一个持续下载快速更新的规则;上个月的全套更新(仅限!)为 65GB。将其微调为仅包含安全更新为 25GB。
删除和重新创建 ADR 没有区别。
我不准备丢弃和重新创建 SUP 和 WSUS,除非我有合理的保证它会解决;时间就是金钱,我已经浪费得够多了。
我似乎在 TechNet 上有人说这是一个应该在 180x 中修复的错误;我愿意升级到 1802,但我们现在正在进行部署,团队成员会很生气。如果 1802 解决了,我会考虑这个问题,但在发行说明或知识库中找不到任何指示。
一个疯狂的想法是构建和配置另一个 WSUS,将其用作上游,然后击败它,直到它不下载 Express Updates。我不知道它在实践中如何工作,我更喜欢更干净的修复,但我愿意尝试将其作为临时措施。
这些选项中的任何一个是可行的、推荐的,还是有另一种更好的方法来驯服这头野兽?
预期的答案可能假设此环境是正确构建的,并且符合文档和推荐的最佳实践。
一个闪亮的例子:在我所有的任务序列中,我有一个组根据计算机模型有条件地安装驱动程序包:

当然,这个列表只会增长。它生长的事实不是什么大不了的事,什么是一个大问题是,每次有改动时我必须手动复制和粘贴把这些变化的每个任务序列我有,这当然叶空间巨大的人为错误。对于跨任务序列通用的其他任务组也是如此。
寻找可以集中管理这些任务的解决方案,将其他任务序列链接到另一个任务序列中的组,或者创建单独的任务序列并链接到该组。
我遇到了 John Marcum(SCCM MVP)的一个解决方案,其中提到了这种能力,但这是前一段时间,我找不到它的链接,看看它是否仍在更新/维护,但我正在寻找对于更多免费解决方案,甚至使用 Powershell 或 ConfigMgr SDK 对我来说都很好,我对两者都不陌生。
更新
尝试在报表生成器中添加数据集时,系统会提示我“输入数据源凭据”。

选择“使用当前 Windows 用户”失败,我没有指定用户的密码。
sccm-2012 ×10
sccm ×8
wmi ×3
powershell ×2
sccm-2012-r2 ×1
sql-server ×1
ssrs ×1
update ×1
windows-7 ×1
wsus ×1