前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >操作系统生成镜像封装类

操作系统生成镜像封装类

作者头像
全栈工程师修炼指南
发布2020-10-26 14:25:35
2K0
发布2020-10-26 14:25:35
举报

[TOC]

章节:部署映像服务和管理工具

1. dism 命令

描述:DISM(Deployment Image Servicing and Management)就是部署映像服务和管理,用于安装、卸载、配置和更新脱机 Windows(R) 映像和脱机 Windows 预安装环境 (Windows PE) 映像中的功能和程序包;

  • Windows 10/8 ADK工具中的DISM取代了多个Windows 7时的AIK工具,包括PEImg、Intlcfg、程序包管理器和 ImageX。
  • 我们可以利用ADK工具来实现,原先有一部分是imagex来处理,现在现在统一由DISM来完成;
  • 命令产生日志:C:\Windows\Logs\DISM\dism.log

命令参数:

DISM.exe [dism_options] {Imaging_command} [<Imaging_arguments>]
DISM.exe {/Image:<path_to_offline_image> | /Online} [dism_options]
         {servicing_command} [<servicing_arguments>]

#DISM 选项:
    /English                - 用英文显示命令行输出。
    /Format                 - 指定报告输出格式。
    /WinDir                 - 指定 Windows 目录的路径。
    /SysDriveDir            - 指定名为 BootMgr 的系统加载程序文件的路径。
    /LogPath                - 指定日志文件路径。
    /LogLevel               - 指定日志(1-4)中所示的输出级别。
    /NoRestart              - 取消自动重新启动和重新启动提示。
    /Quiet                  - 取消除错误消息之外的所有输出。
    /ScratchDir             - 指定暂存目录的路径。
#常用命令
/Capture-Image - 将驱动器的映像捕获到新的 WIM 文件中,捕获的目录包含所有子文件夹和数据。
/CaptureDir - 指定捕获目录。


#通用映像处理命令: /imagefile:"C:\xxx.wim"
/Mount-Image - 从 WIM 或 VHD 文件装载映像。
/Commit-Image - 保存对装载的 WIM 或 VHD 映像的更改。
/Unmount-Image - 卸载已装载的 WIM 或 VHD 映像。
/Remount-Image - 恢复孤立的映像装载目录。
/Cleanup-Mountpoints - 删除与损坏的已安装映像关联的资源。
/List-Image - 显示指定映像中的文件和文件夹的列表。
/Delete-Image - 在具有多个卷映像的 WIM 文件中删除指定的卷映像。

/Split-Image  - 将现有 .wim 文件拆分为多个只读拆分 WIM (SWM) 文件。
/Apply-Image  - 应用一个映像。
  - /ApplyDir - 指定应用目录。
/Append-Image - 将新映像添加到 WIM 文件中。(增量备份)
/Export-Image - 将指定映像的副本导出到其他文件。
/Capture-Image - 将驱动器的映像捕获到新的 WIM 文件中。捕获的目录包含所有子文件夹和数据

/Get-ImageInfo - 显示有关 WIM 或 VHD 文件中映像的信息。
/Get-MountedImageInfo - 显示有关安装的 WIM 和 VHD 映像的信息。


#WIM 命令: /wimfile:"C:\xxx.wim"
/Apply-CustomDataImage  - 冻结自定义数据映像中包含的文件。
/Capture-CustomImage    - 将自定义设置捕获到 WIMBoot 系统上的增量 WIM 文件中,捕获的目录包括所有子文件夹和数据。

/Get-WimInfo - 显示有关 WIM 文件中的映像的信息。
/Mount-Wim - 从 WIM 文件挂载映像。
/Commit-Wim - 保存对挂载的 WIM 映像的更改。
/Unmount-Wim - 卸载挂载的 WIM 映像。
/Remount-Wim - 恢复孤立的 WIM 挂载目录。
/Cleanup-Wim - 删除损坏的WIM映像关联的挂载资源。

/Get-WIMBootEntry    - 显示指定磁盘卷的WIMBoot 配置项。
/Get-MountedWimInfo  - 显示显示挂载的 WIM 映像的信息。

#映像规格:
/Online - 以正在运行的操作系统为目标。
/Image  - 指定脱机 Windows 映像的根目录的路径。

#FFU COMMANDS:
/Capture-Ffu   - 将物理磁盘映像捕获到新的FFU文件中。
/Apply-Ffu     - 应用.ffu映像。
/Split-Ffu     - 将一个现有的. FFU文件分割为多个read-onlysplit FFU文件。

基础命令实例:

# 1.获取wim文件信息
$dism.exe /get-wiminfo /wimfile:"C:\install.wim"  
# 映像的详细信息: c:\wim\sources\install.wim
# 索引: 1
# 名称: Windows 10 教育版
# 描述: Windows 10 教育版
# 大小: 14,780,257,821 个字节

# 索引: 2
# 名称: Windows 10 企业版
# 描述: Windows 10 企业版
# 大小: 14,780,328,567 个字节


# 2.将install.wim文件 索引1 /名称 目录 挂载到c:\1文件夹中
$dism /Mount-Image /ImageFile:输入install.wim的路径 /Name:" Windows 10 企业版" /MountDir:C:\winpe\offline
$dism /mount-image /imagefile:C:\winpe\media\sources\boot.wim /index:1 /mountdir:C:\winpe\mount
$dism /mount-wim /wimfile:"C:\install.wim" /index:1 /MountDir:c:\1  
# 正在安装映像
# [==========================100.0%==========================]
# 操作成功完成。


# 3.查看映像的文件列表
$dism /list-image /imagefile:"c:\wim\sources\install.wim" /index:1 | more
# 部署映像服务和管理工具 版本: 10.0.18362.1
# \$Recycle.Bin\
# \PerfLogs\
# \Program Files\
# \Program Files\desktop.ini
# \Program Files\Common Files\
# \Program Files\Common Files\microsoft shared\
# \Program Files\Common Files\microsoft shared\ink\
# \Program Files\Common Files\microsoft shared\ink\Alphabet.xml


# 4.查看已经挂载的镜像
$dism /get-mountedwiminfo
# 安装的映像:
# 安装目录: f:\Win
# 映像文件: f:\2020-7-3.wim
# 映像索引: 1
# 安装的读/写: 是
# 状态: 无效
# 操作成功完成。


# 6.使用完后将挂载的文件保存并卸载映像(特别注意,在卸载前将挂载目录关闭,否则将出现错误:)
$dism /unmount-wim /mountDir:C:\winpe  /commit #提交更改
$dism /Unmount-Image /MountDir:C:\offline /Commit
$dism /unmount-wim /mountdir:D:\win /discard #卸载映像并且丢弃修改


# 7.清除所有挂载点
$dism /Cleanup-Wim
# 指向 C:\winpe\mount 的过时安装项已删除
# 正在扫描驱动器 C 上的过时文件
# 操作成功完成。


# 8.查看当前系统信息,以及查看当前系统是否可升级,以及可升级版本:
$dism /online /Get-CurrentEdition
# 版本: 10.0.18362.1
# 映像版本: 10.0.18362.30
# 当前版本为:
# 当前版本 : Professional
$dism /online /Get-TargetEditions
# 可以升级的版本:
# 目标版本 : ProfessionalEducation
# 目标版本 : ProfessionalWorkstation
# 目标版本 : Education
# 目标版本 : ProfessionalCountrySpecific
# 目标版本 : ProfessionalSingleLanguage
# 目标版本 : ServerRdsh
# 目标版本 : IoTEnterprise
# 目标版本 : Enterprise


# 9.开启/关闭系统相关主机功能功能
$dism /online /Get-Features|more  #查看所有功能
# 程序包功能列表 : Microsoft-Windows-Foundation-Package~31bf3856ad364e35~amd64~~10.0.18362.1
# 功能名称 : Printing-PrintToPDFServices-Features
# 状态 : 已启用
$dism /online /Disable-Feature /FeatureName:XXX #禁用指定功能
$dism /online /Enable-Feature /FeatureName:XXX  #启用指定功能


# 10.将驱动程序以及证书添加到该映像(在装载后)
dism /Image:C:\test\offline /Add-Driver /Driver:C:\drivers\mydriver.inf #单个驱动
dism /Image:C:\test\offline /Add-Driver /Driver:c:\drivers /Recurse   #文件夹及其所有子文件夹安装所有驱动程序(常)
dism /Image:C:\test\offline /Add-Driver /Driver:C:\drivers\mydriver.inf /ForceUnsigned #使用 /ForceUnsigned 来安装未签名的驱动程序
#看 Windows 映像中的第三方驱动程序 (.inf) 文件列表、
dism /Image:C:\test\offline /Get-Drivers 
#驱动程序被添加到 Windows 映像中并命名为 Oem*.inf。这样做是为了确保添加到计算机中的新驱动程序命名的唯一性。
#例如文件 MyDriver1.inf 和 MyDriver2.inf 将重命名为 Oem0.inf 和 Oem1.inf。 
dism /Image:C:\test\offline /Remove-Driver /Driver:OEM1.inf /Driver:OEM2.inf  #从映像中删除特定驱动程序。


# 11.用 DISM 将应答文件应用到装载的 Windows 映像
dism /Image:C:\test\offline /Apply-Unattend:C:\answerfiles\myunattend.xml

补充F&Q: 问题1.上面挂载过一次后,再次挂载不能挂载,显示错误: 0xc1420127,已经在指定 WIM 中装载指定的映像以进行读/写访问。 原因:封装后会把镜像挂载的目录进行卸载,由于可能镜像挂载的目录正处于打开的状态,因此不能卸载完成,然后自己就直接退出了,下次再次使用此目录就会因为仍在占用中而出现错误。 解决方法:先查看现在仍在使用的目录有哪些,然后对其进行卸载。

$ dism /get-mountedwiminfo
# 安装的映像:
# 安装目录: D:\win
# 映像文件: D:\BOOT.WIM
# 映像索引: 1
# 安装的读/写: 是
# 状态: 无效
# 操作成功完成。
 
$dism /unmount-wim /mountdir:D:\Win /discard
# 映像文件 : D:\BOOT.WIM
# 映像索引 : 1
# 正在卸载映像
# [==========================100.0%==========================]
系统备份(重点)

描述: 用 DISM 命令进行系统备份与还原不需要任何第三方软件,备份后的镜像文件格式为wim,备份文件占用空间小(比 Ghost 小很多),而且可进行增量备份。 缺陷:不支持热备份,备份与还原需要在 Win7 以上的 PE 或 第二系统中进行。 注意: 初始备份耗时较长,可以在没有原始备份文件情况下使用安装镜像中的 install.wim 进行增量备份,然后提取出此次备份即可

基础示例:

#1)初始备份(例如:把 C 分区的系统备份到 D 分区的 Win8BF 文件夹中,备份文件名为 Win8Pro.wim):
dism /Capture-Image /ImageFile:D:\Win8BF\Win8Pro.wim /CaptureDir:C:\ /Name:Win8Pro-1 /Description:0000-00-00


#2)增量备份(例如:把 C 分区的系统增量备份到 D:\Win8BF\Win8Pro.wim 中):
#重要事项: 确保有足够的磁盘空间可用于运行 /Append-Image 选项。如果在附加映像期间磁盘空间不足,则可能会损坏 .wim 文件。
dism /Append-Image /ImageFile:D:\Win8BF\Win8Pro.wim /CaptureDir:C:\ /Name:Win8Pro-2 /Description:0000-00-00

#3)系统还原(例如:把 D:\Win8BF\Win8Pro.wim 中第二次备份还原到 C 分区):
dism /Apply-Image /ImageFile:D:\Win8BF\Win8Pro.wim /Index:2 /ApplyDir:C:\

#4)例如在 PE 中把 Win8Pro 安装到 C 分区(设 Win8ISO 用虚拟光驱加载的盘符为 E):
dism /Apply-Image /ImageFile:E:\sources\install.wim /Index:1 /ApplyDir:C:\
#由于 Windows 系统原始(WIM 映像)中没有启动引导文件,需要添加启动引导:
bcdboot C:\windows /s C: /l zh-cn
#如果是把 Windows 8 安装到 USB 设备中作 Windows To Go,也应添加启动引导:
bcdboot X:\windows /s X: /l zh-cn /f ALL (X为 USB 设备的盘符)

#5) 检查映像是否可损坏、修复
dism /Online /Cleanup-Image /ScanHealth  #扫描映像来检查损坏
dism /Online /Cleanup-Image /CheckHealth #检查映像以查看是否有检测到损坏(其依赖上一条命令)
#若扫描出计算机中的不一致情况,检测到系统的损坏,并报告映像是状态良好、可以修复,就可以用 /RestoreHealth 参数进行修复。
DISM /Online /Cleanup-image /RestoreHealth #(注意需要联网)把那些不同的系统文件还原成官方系统源文件,其他的第三方软件和用户设置完全保留比重装好多了
dism /Online /Cleanup-Image /RestoreHealth /Source:c:\test\mount\windows /LimitAccess #自定义源修复

注意事项

  • 因 dism 安装 WIM 映像不会像 Ghost 那样格式化磁盘,所以如果需要可以自己格式化系统盘。
  • 修改映像路径与应用目录可把任意一个系统备份的卷映像还原到任意一个分区。
  • 修改卷映像索引号或卷映像名称可以还原备份映像中的任意一个备份。
  • 也可以用此命令把 Windows 系统(WIM 映像)快速安装到任何分区。

2. sysprep命令

描述:系统准备工具(System Preparation - Sysprep)与其他部署工具一直使用,进入审核模式并可以将系统重新进入到OOBE全新部署阶段;

作用:

  • 通过删除计算机特定信息(如安全标识符、事件日志内容、系统还原点、已安装的即插即用驱动程序等等)来通用化一个Windows安装,这样就能够使用磁盘映像(磁盘复制)工具,如ImageX,捕获通用化的安装,并将捕获的映像部署到其他计算机
  • 将Windows安装启动到审核模式,这样能够通过添加额外的设备驱动程序、安装额外的应用程序来进行定制,然后测试安装
  • 在将计算机交付给最终用户之前,应当确保当最终用户第一次启动计算机时显示欢迎使用Windows(系统全新体验)

命令配置:

  • sysprep 可执行目录:%systemroot%\system32\sysprep
  • sysprep 日志文件:%WINDIR%\System32\Sysprep\Panther

System过程概述:

  • Sysprep 验证。验证 Sysprep 是否可以运行。只有管理员才可以运行 Sysprep。每次只能运行一个 Sysprep 实例。另外,Sysprep 必须在其安装时所运行的 Windows 版本上运行。
  • 日志记录初始化。初始化日志记录。有关详细信息,请参阅 Sysprep 日志文件。
  • 分析命令行参数。分析命令行参数。如果用户未提供命令行参数,则会出现“Sysprep 准备工具”窗口,用户可以在其中指定 Sysprep 操作。
  • 处理 Sysprep 操作。处理 Sysprep 操作,调用相应的 .dll 文件和可执行文件,并将操作添加到日志文件。
  • 验证 Sysprep 处理操作。验证所有的 .dll 文件都已处理所有的任务,然后关闭或重新启动系统。

用法参数:

#USAGE
sysprep.exe [/quiet] [/generalize] [/audit | /oobe] [/reboot | /shutdown | /quit] /unattend:<filename> /mode:vm

#parameter
/audit:强制计算机下次启动时进入审核模式。另外如果要随sysprep使用应答文件,为auditSystem和auditUser传送配置的任何设置都会被处理;
/oobe:强制计算机在下次启动时加载欢迎使用Windows。另外如果要随sysprep使用应答文件为oobeSystem传送配置的任何设置都会在欢迎使用;
/generalize :通用如果要打包部署到在其他不同型号机器上运行则需要进行指定;
/reboot | /shutdown | /quit : 运行sysprep后重启系统/关闭系统/退出程序
/quiet : 安静模式不显示确认消息。当使用/unattend参数自动运行sysprep时,使用此参数
/unattend : answerfile sysprep运行时应用指定应答文件中的配置的设置,只有在/oobeSystem、/auditSystem、/auditUser传送中指定的设置能够应用
/mode:vm : Windows(R) 8 的新增内容。一般化虚拟硬盘 (VHD),这样可以将其部署为相同虚拟机 (VM) 或虚拟机监控程序上的 VHD。VM 重新启动后该 VM 可以引导到 OOBE

使用案例:

#示例1:通用化一个系统,并重新启动到欢迎使用Windows 
Sysprep /oobe /generalize /reboot

#示例2:通用化一个系统并重新启动到审核模式 ,设置完成后再次在sysprep选项中选择为“进入系统全新体验”和“重新启动”,以提示在审核模式中进行定制后必须重启。
Sysprep /audit /generalize /reboot 


#示例3:Windows 8 包括 Sysprep VM 模式。VM 模式将会一般化将其部署为相同虚拟机或虚拟机监控程序上的 VHD 的 VHD
#该模式支持虚拟机的快速部署。只有从虚拟机内部运行 VM 模式时,该模式才受支持
Sysprep /generalize /oobe /mode:vm

注意事项

  • 在你运行 Sysprep 时,Windows 仅替换操作系统卷上的计算机安全标识符 (SID)。
  • 当 Sysprep 对映像进行一般化时,仅对常规分区进行一般化。因此如果单个计算机具有多个操作系统,必须在每个映像上逐个运行 Sysprep。
  • 在运行 sysprep /generalize 之前不要使用 Windows 应用商店来更新你的 Windows 应用商店应,不运行 Sysprep /generalize 命令而将 Windows 映像移动或复制到其他计算机的做法不受支持。

参考来源: https://technet.microsoft.com/zh-cn/library/dn938331(v=vs.85).aspx https://technet.microsoft.com/zh-cn/library/dn938330(v=vs.85).aspx

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-10-10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. dism 命令
    • 系统备份(重点)
    • 2. sysprep命令
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档