You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell使用New-ISOFile创建ISO超出大小限制如何解决?

问题根因

该报错由两个问题共同导致:

  1. IMAPI2(Windows内置光盘镜像编程接口)默认使用Joliet文件系统,最大仅支持2GB容量,WSUS更新数据通常远超该上限
  2. 你的代码存在重复添加文件的逻辑错误,同一目录被多次写入镜像,额外占用容量触发大小限制

修复步骤

1. 调整镜像文件系统格式,解除容量上限

在初始化$image对象的代码段后,添加UDF格式配置,UDF 2.5支持最大2TB容量,完全满足WSUS数据存储需求:

## 原初始化代码
try {
    $image = New-Object -ComObject IMAPI2FS.MsftFileSystemImage -Property @{VolumeName=$title} -ErrorAction Stop
    Write-Verbose ("initialised.")
} # try
catch {
    throw ("Failed to initialise image. " + $_.exception.Message)
} # catch

## 新增下面的配置代码
# 指定使用UDF 2.5文件系统,替换默认2GB限制的Joliet格式
$image.FileSystemsToCreate = 4 
$image.UDFRevision = 0x250
# 若需要更大容量可手动指定可用块数,按2048字节/块计算,如下为100GB容量配置
# $image.FreeMediaBlocks = 52428800

2. 修复重复添加文件的逻辑错误

原代码对每个目录执行了3次写入操作,既导致容量异常占用,也会出现路径冲突问题,直接替换原文件添加逻辑即可:

## 替换原WSUSMetaData添加逻辑
## 创建WSUSMetaData子目录,将本地内容写入该子目录
$DirWSUSMetaData = $image.CreateDirectoryItem("WSUSMetaData")
$DirWSUSMetaData.AddTree($WSUSMetaDataLocation, $true)

## 替换原WSUSContent添加逻辑
## 创建WSUSContentData子目录,将本地内容写入该子目录
$DirWSUSContent = $image.CreateDirectoryItem("WSUSContentData")
$DirWSUSContent.AddTree($WSUSContentLocation, $true)

注意:删除原代码中后续多余的foreach循环写入逻辑,AddTree方法已经递归添加了对应目录下的所有文件,无需重复操作。

3. 其他小问题修复

  • 修正拼写错误:报错提示中的Faile改为Failed,exeption改为exception
  • 移除不存在的变量引用:删除Write-Verbose ("Processing nested system " + $vmName)行,$vmName变量未定义无意义

内容的提问来源于stack exchange,提问作者cstewart28

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 05:54:03