Windows 企业母盘 Ghost 方案(镜像制作)指引
1. 登录 iOA 零信任管理平台控制台,在左侧导航栏,选择策略中心 > 终端管控策略 > 客户端管理。
2. 在客户端管理页面,选择客户端自保护,在编辑策略模块中,选择客户端自保护开关设置。
3. 确保后台允许客户端修改设置、关闭客户端自保护。

4. 在 iOA 客户端上,单击 
> 设置。



5. 选择常规设置 > 自保护-临时关闭自保护,应用后单击确定。


6. 在客户端上执行
superKill.bat
脚本。说明:
7. 备份
C:\\ProgramData\\ZtsmEnt\\Basic\\Enterprise_GlobalMgr.db
文件到另一个位置,然后将其删除(待镜像完成后,将该文件复制回原处)。

8. 单击继续。


9. 将 serverconfig.dat 文件进行修改。
文件路径:
C:\\ProgramData\\ZtsmEnt\\Basic\\Serverconfig.dat
。serverconfig.dat
里面usrlogin
节点数据需要删除。如下图灰色部分全部删除:说明:
如下图灰色部分全部删除。


10. 开始制作镜像,请等待镜像制作完成。(到此镜像已经制作完成)。
11. 因前面做镜像,将母机损坏,这里为了恢复母机,因此需要把刚备份的
Enterprise_GlobalMgr.db
还原回去(如果不再需要这台母机,可以跳过此操作)。

12. 在 iOA 客户端上,单击 
> 设置。



13. 选择常规设置 > 自保护-开启自保护,应用后单击确定。

14. 至此,母机恢复完成。
macOS 企业母盘 Ghost 方案(镜像制作)指引
客户端提供清除唯一标识及相关字段的方案及步骤:
1. 正常安装 iOA,启动后确认 iOA 工作正常。
2. 关键步骤:制作母盘时,确保设备是断网状态,设备断开网络。
3. 运行母盘制作脚本。在 Mac 终端中运行脚本:
sudo /Users/aaaa/Downloads/cleaniOA
。
4. 关键步骤:确认清除唯一标识符相关字段 currentMid 、lastGuid、lastMacAddress 的值,查看方式如下:
方式1:使用命令查看
4.1 在终端中用命令查看对应key的值,如:查看 currentMid,查看 lastGuid 替换对应 key 值即可。
sqlite3 /Library/Application\\ Support/QQPCiOA/QQPCMgrConfig.db "select value from config where key='
currentMid
'"
4.2 如下则清除成功。

方式2:使用 DB 工具查看
4.1 查看清除内容,数据库位置如下,可使用 DB Browser 浏览数据。

4.2 关键步骤:currentMid 字段,选择浏览数据,在 key 中过滤 currentMid/lastGuid/lastMacAddress,如下即是存在,若没有显示则清除成功,其他字段按照相同方式查看即可。

5. 开始制作母盘。
注意:
制作过程中设备网络断开状态(不能联网),防止设备标识生成重复。
6. 验证效果:母盘制作完成后,找两台或多台设备安装母盘,完成启动 iOA,设备联网,查看 iOA 工作状态,同步策略。查看两台设备的 iOA 唯一标识符不同,即母盘制作成功(使用上述方式1或方式2查看即可)。
各端避免镜像安装后 mid 一致解决方案
Windows
1. 安装 iOA。
2. 断开网络。
3. 删除文件:
C:\\ProgramData\\Tencent\\DeskUpdate\\Enterprise_GlobalMgr.db
。
4. 制作镜像。
macOS
1. 正常安装 iOA 后,同步策略成功。
2. 断开当前的网络。
3. 结束 iOA 所有主要进程,提供脚本。运行脚本方式:
sudo sh /Users/harveyxu/Downloads/restartiOA
。4. 清除 iOA 数据库中 mid 内容,数据库位置如下,可使用 DB Browser 浏览数据:

5.
mid
字段,选择浏览数据,在 key
中过滤 mid
,然后进行删除。
6. 保存修改值。
7. 重启 iOA,记录时间,观察网络服务中的网络请求没有包含
mid
值,6001 请求中的 lastmid
字段值为空,即删除 mid
成功。
8. 制作 macOS 镜像,详情请参见 macOS企业母盘Ghost方案(镜像制作)指引。
9. 重启 iOA 脚本,脚本内容如下:
#! /bin/bash#set -o kill set -eecho "开始"rm -rf /tmp/sys_imagerm -rf /tmp/sys_image_installer.logecho "sys_image" >> /tmp/sys_imagelogPath=/tmp/sys_image_installer.logecho "开启重启iOA相关进程" >> $logPath# /usr/bin/killall -9 ztsmwechat# /usr/bin/killall -9 QQPCMgr# /usr/bin/killall -9 QQPCMgrDaemon# /usr/bin/killall -9 QQPCPolicyMgr# /usr/bin/killall -9 NetworkServiceMgr# /usr/bin/killall -9 runmgr# /usr/bin/killall -9 ztsmwechat# /usr/bin/killall -9 runmgr# /usr/bin/killall -9 QQPCUpdate# /usr/bin/killall -9 NetworkServiceMgr# /usr/bin/killall -9 tav# /usr/bin/killall -9 NGNMgr# /usr/bin/killall -9 QQPCUpdate# /usr/bin/killall -9 tav# /usr/bin/killall -9 iOADiagnosis# /usr/bin/killall -9 QQPCWatermark# /usr/bin/killall -9 PreLoginQQPCMgr# /usr/bin/killall -9 dns_guard# /usr/bin/killall -9 QQPCEdr# /usr/bin/killall -9 QQPCDlp# /usr/bin/killall -9 ztsmedr# /usr/bin/killall -9 ztsmdlpecho "进程k结束" >> $logPathecho "清理数据库开始" >> $logPathecho "清理前DB CurrentMid:" >> $logPathmidQueryRet=$(sqlite3 /Library/Application\\ Support/QQPCiOA/QQPCMgrConfig.db "select value from config where key='currentMid'" 2>>$logPath) || {echo "Error: Failed to query 'currentMid' from db" >> $logPath}echo "query 'currentMid' from db, got val = $midQueryRet" >> $logPathecho "开始清理db" >> $logPathsqlite3 /Library/Application\\ Support/QQPCiOA/QQPCMgrConfig.db "delete from config where key='currentMid'"sqlite3 /Library/Application\\ Support/QQPCiOA/QQPCMgrConfig.db "delete from config where key='lastGuid'"sqlite3 /Library/Application\\ Support/QQPCiOA/QQPCMgrConfig.db "delete from config where key='lastMacAddress'"echo "清理结束" >> $logPathecho "清理后DB CurrentMid:" >> $logPathmidRet=$(sqlite3 /Library/Application\\ Support/QQPCiOA/QQPCMgrConfig.db "select value from config where key='currentMid'" 2>>$logPath) || {echo "Error: Failed to query 'currentMid' from db" >> $logPath}echo "query 'currentMid' from db, got val = $midRet" >> $logPathecho "制作结束" >> $logPathecho "结束"