CollectAllLogs的目的是快速、轻松地从单个设备或设备集合收集非常广泛的日志列表、注册表设置以及各种其他诊断数据。 CollectAllLogs脚本旨在使用 Microsoft 终结点配置管理器 (MECM/SCCM/ConfigMgr) 的运行脚本功能推送到客户端。 CollectAllLogs还适用于通过云管理网关 (CMG) 远程连接的客户端(仅使用 PKI。尚不支持增强型 HTTP,因为客户端将收集但不会上传)。使用运行脚本功能将CollectAllLogs脚本推送到客户端后,客户端将收集、压缩压缩 ZIP 文件(使用 BITS)并将其上传到客户端当前分配的管理点。最后,将发送一条状态消息,该消息会触发站点服务器上的状态过滤器规则,将压缩的 ZIP 文件从管理点移动到可配置的本地路径或选择的 UNC 共享。
注意:此脚本尚未在层次结构(使用 CAS)中进行彻底测试。如果您有 CAS,则需要编辑 MoveLogToPrimary.ps1 的第 73 行以反映您希望存储日志的位置。如果您在层次结构中测试解决方案,请提供反馈。
目前可以收集的日志、注册表设置和诊断数据如下:
MECM | Windows更新 | 基础操作系统 | 主数据管理 | Office365 | 第三方 |
---|---|---|---|---|---|
MECM 客户端日志 | Windows 更新代理版本、安装源、安装历史记录、注册表和 GPO 设置 | Windows 设置 | MDM 诊断工具(配置、注册、自动驾驶仪)输出 | OneDrive 日志 | 赛门铁克防病毒排除项 |
MECM 客户端注册表项 | 边缘更新 | PNP 设备和驱动程序 | MDM 事件日志 | ||
移动客户端.TCF | 哥伦比亚广播公司日志 | 过滤器驱动程序 | AAD 设备配置 | ||
CCMStore.SDF | 事件日志(系统/应用程序/Bitlocker) | Intune 策略、注册状态和管理扩展日志 | |||
运行流程和服务 | |||||
语言包 | |||||
交付优化 | |||||
Windows 服务和安装诊断日志 | |||||
DISM日志 | |||||
瓦斯 | |||||
Registry.POL 损坏1 | |||||
Windows Defender 日志、首选项和诊断数据2 | |||||
磁盘/卷信息 | |||||
Windows 安装程序注册表值 | |||||
BCD店 | |||||
1 REGISTRY.POL 损坏已知会导致 GPO 和软件更新无限期失败,直至解决为止。 Registry.POL 损坏通常是由防病毒排除(而不是排除它)引起的。
2有关更多详细信息,请参阅收集 Microsoft Defender AV 诊断数据。
首先,首先检查CollectAllLogs .ps1 中的第 24-37 行,以确定是否有不需要的日志。如果有,请将它们设置为“否”,这样就不会发生收集。否则,默认情况下,除 Symantec Antivirus 排除项外,所有内容均为“是”。
将文件Microsoft.ConfigurationManagement.Messaging.dll从 < ConfigMgr 安装目录AdminConsolebin 复制到每个管理点上的 < ConfigMgr 安装目录>CCMIncomingMessagingDll。每个 MP 上应该已经存在 CCMIncoming,但需要创建 MessagingDll 目录。
在软件库中,使用脚本CollectAllLogs .ps1的内容创建一个新的运行脚本并批准它。如果您无法批准自己的脚本,“层次结构设置”中有一个复选框可供您批准。更改此配置应该是一个商业决策。作为最佳实践,只有当您是一位经过验证的完美主义者或者您拥有真正的实验室时,才批准您自己的脚本。
将MoveLogtoPrimary.ps1脚本放入主站点服务器中选择的目录中 - 以后称为 < ScriptsDir >。
创建日志目录 - 以后称为 < CollectAllLogs Dir >。 < CollectAllLogs Dir > 可以是站点服务器上的本地路径,也可以是远程服务器上的 UNC 路径。唯一的要求是站点服务器的计算机帐户必须具有此目标共享的创建权限。
在 ConfigMgr 管理控制台中,转至“管理”、“站点”,选择站点,然后单击“状态过滤器规则”和“创建”。
在“常规”选项卡上,创建消息 ID 为1234 的状态过滤规则。
在“操作”选项卡上,选中“运行程序”框。
在“程序”空白处输入以下命令行,然后单击“确定” 。
C:WindowsSystem32WindowsPowerShellv1.0powershell.exe -ExecutionPolicy 绕过 -File "< ScriptsDir >MoveLogtoPrimary.ps1" -InsString1 %msgis01 -InsString2 %msgis02 -LogFolder < CollectAllLogs Dir>
右键单击 MECM 控制台中的单个设备或设备集合。在软件库中,单击运行脚本。
选择在步骤 2 中创建的收集所有日志脚本,然后单击下一步两次。
大约 5 分钟后,监视用于 < CollectAllLogs Dir > 的路径,查找 .zip 文件,其中包含所有请求的文件、事件日志、注册表导出和系统信息,该文件将命名为 < ComputerNameMM-DD-YYYYHHMMS>.zip 。在我的实验室中,这些 zip 文件的大小从 12MB 到 60MB 不等,具体取决于收集的数据、日志历史保留设置和事件日志设置。建议在较小的集合(<10 个客户端)上进行测试,以确定最终用户和网络监管者会注意到什么影响(如果有)。
如果您对收集日志或其他诊断信息有任何其他想法,请随时为这个出色的实用程序做出贡献。
CollectAllLogs脚本由 Microsoft 客户工程师 Russ Rimmerman 和 David Anderson 开发。如果没有才华横溢、无所畏惧的MECM 大师 David Anderson(PFE/CE)提供的原创想法和功能齐全的启动脚本, CollectAllLogs就不会存在。 David 对 Powershell 脚本的掌握促进了该实用程序的完整管道和初步基础。
MPDetection*.log 显示产品、引擎、服务和定义版本更新和更新时间。 MSSupportFiles.cab 包含大量用于分析 Windows Defender 运行状况和活动的深入文件。