通过SCCM查询Windows 7工作站是否启用TrueCrypt加密
用SCCM批量检测Windows 7工作站的TrueCrypt加密状态
我之前帮客户处理过类似的TrueCrypt批量排查需求,既然WMI和注册表这条路走不通,咱们可以换个思路,利用TrueCrypt自带的命令行工具结合SCCM的合规性检查来实现,下面是几个可行的方案:
方案一:通过TrueCrypt命令行工具检测(最可靠)
TrueCrypt自带了命令行参数,能直接输出加密卷的状态,我们可以写个脚本调用这个工具,再通过SCCM的Configuration Item来批量收集结果。
步骤1:编写检测脚本
这里提供批处理和PowerShell两种版本,你可以根据环境选择:
批处理脚本(适用于传统环境)
@echo off setlocal enabledelayedexpansion REM 指定TrueCrypt的默认安装路径(根据你们镜像的实际路径调整) set "TC_EXE=C:\Program Files\TrueCrypt\TrueCrypt.exe" REM 先检查TrueCrypt是否存在 if not exist "!TC_EXE!" ( echo STATUS: TrueCrypt未安装或路径错误 exit /b 2 ) REM 调用TrueCrypt命令行查看卷状态,筛选加密标识 "!TC_EXE!" /text /list | findstr /i "encrypted" >nul if !errorlevel! equ 0 ( echo STATUS: TrueCrypt加密已启用 exit /b 0 ) else ( echo STATUS: TrueCrypt加密未启用 exit /b 1 )
PowerShell脚本(更灵活)
# 查找TrueCrypt.exe的位置(如果路径不固定) $tcExe = Get-ChildItem -Path "C:\Program Files", "C:\Program Files (x86)" -Filter "TrueCrypt.exe" -Recurse -ErrorAction SilentlyContinue | Select-Object -First 1 -ExpandProperty FullName if (-not $tcExe) { Write-Output "STATUS: TrueCrypt未找到" exit 2 } # 调用命令行获取状态 $tcOutput = & $tcExe /text /list if ($tcOutput -match 'Encrypted') { Write-Output "STATUS: TrueCrypt加密已启用" exit 0 } else { Write-Output "STATUS: TrueCrypt加密未启用" exit 1 }
步骤2:在SCCM中创建Configuration Item
- 打开SCCM控制台,进入资产和合规性 > 合规设置 > 配置项目
- 创建新的配置项目,选择Windows平台,勾选脚本作为设置类型
- 添加脚本设置:
- 脚本类型选你写的批处理/PowerShell
- 粘贴脚本内容,设置检测方法为脚本返回值
- 合规性规则:当返回值为
0时标记为合规(代表已加密),返回1或2标记为不合规
- 将配置项目添加到配置基线,部署到所有Windows 7工作站集合
- 等待客户端同步后,就能在SCCM控制台的合规性结果中查看每台机器的加密状态了
方案二:通过系统文件特征辅助检测(备选)
如果命令行工具调用有问题(比如权限限制),可以尝试检查TrueCrypt的核心驱动或加密痕迹:
- 检查
C:\Windows\System32\drivers\truecrypt.sys是否存在且已加载(用sc query truecrypt命令),但注意:预装软件可能已经存在驱动,但未启用加密也会有这个文件,所以只能作为辅助判断 - 检查系统是否存在TrueCrypt的预引导救援ISO(
C:\TrueCrypt Rescue Disk.iso),但这个是用户可选创建的,可靠性不高
注意事项
- 确保SCCM客户端有足够权限执行TrueCrypt命令行(需要本地管理员权限)
- 如果你们的TrueCrypt安装路径不是默认的,一定要在脚本里调整或用PowerShell的动态查找逻辑
- 因为TrueCrypt已经停止维护,长期来看建议考虑迁移到BitLocker等受支持的加密方案,但当前场景下这个方法是最直接的
内容的提问来源于stack exchange,提问作者TheIronRose
相关产品推荐
相关产品推荐

