受限PowerShell 5.1环境下Zip归档修改兼容问题求助
PowerShell修改专业应用Zip包内JSON文件的兼容问题
在医院受限网络环境(Windows 11系统,PowerShell处于约束语言模式,无法安装第三方软件)下,编写PowerShell脚本对某专业应用生成的Zip包内子文件夹中的JSON文件进行搜索替换修改,脚本核心功能正常,但替换修改后的JSON文件时遇到以下问题:
已尝试的方案及问题
- 删除原Zip包,从临时解压目录执行
Compress-Archive重新生成Zip:目标应用不兼容该命令生成的包;但将脚本生成的文件用资源管理器重新压缩后,应用可正常识别。 - 使用
Compress-Archive -Update更新整个解压目录到原Zip:所有文件重复,应用不接受;仅更新包含修改后JSON的子目录,仍出现文件重复问题。 - 仅将修改后的JSON文件用
-Update更新到原Zip:文件被放置在Zip根目录,未替换子文件夹内的原文件,应用仍读取旧内容。
应用报错信息
-----[InnerException]-------------------- Sequence contains no matching elements -----[InnerException - StackTrace]-------------------- at System.Linq.Enumerable.Single[TSource](IEnumerable`1 source, Func`2 predicate) at DIPS.OpenEhr.Forms.IO.FormReader.Read(ZipFile zipFile) at DIPS.OpenEhr.Forms.IO.FormReader.Read(String path) at DIPS.ArenaEhr.Designers.Wpf.Client.EhrClient.FileRepositoryBuilderEhrClient.<>c__DisplayClass31_0.<GetFormAsync>b__0() at System.Threading.Tasks.Task`1.InnerInvoke() at System.Threading.Tasks.Task.Execute()
目录结构
原Zip解压后结构
Get-ChildItem -Path .\Allergen_immunterapi_konsultasjon_variant-2.2.0 -Recurse Directory: .\Allergen_immunterapi_konsultasjon_variant-2.2.0 Mode LastWriteTime Length Name ---- ------------- ------ ---- da---l 04.03.2024 11:57 Allergen_immunterapi_konsultasjon_variant_2_2_0 da---l 04.03.2024 11:57 META_INF Directory: .\Allergen_immunterapi_konsultasjon_variant-2.2.0\Allergen_immunterapi_konsultasjon_variant_2_2_0 Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---l 16.02.2024 14:48 14245 form_dependencies.json -a---l 16.02.2024 14:48 257808 form_description.json -a---l 16.02.2024 14:48 34050 form_layout.json -a---l 16.02.2024 14:48 27968 form_script.js Directory: .\Allergen_immunterapi_konsultasjon_variant-2.2.0\META_INF Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---l 16.02.2024 14:48 1308 MANIFEST.MF
临时目录结构(已修改JSON)
Get-ChildItem -Path .\AppData\Local\Temp\1dfacedf-8f54-4708-a8ce-6ec66bd6d75f -Recurse Directory: .\AppData\Local\Temp\1dfacedf-8f54-4708-a8ce-6ec66bd6d75f Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 04.03.2024 11:55 Allergen_immunterapi_konsultasjon_variant_2_2_0 d----- 04.03.2024 11:55 META_INF Directory: .\AppData\Local\Temp\1dfacedf-8f54-4708-a8ce-6ec66bd6d75f\Allergen_immunterapi_konsultasjon_variant_2_2_0 Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 16.02.2024 14:48 14245 form_dependencies.json -a---- 04.03.2024 11:55 257842 form_description.json -a---- 16.02.2024 14:48 34050 form_layout.json -a---- 16.02.2024 14:48 27968 form_script.js Directory: .\AppData\Local\Temp\1dfacedf-8f54-4708-a8ce-6ec66bd6d75f\META_INF Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 16.02.2024 14:48 1308 MANIFEST.MF
当前使用的Compress-Archive命令
Compress-Archive -Path $tempDir\* -DestinationPath $formZipPath -Force
请问如何让Compress-Archive生成应用兼容的Zip包,或者实现无重复、路径正确的-Update操作?
内容的提问来源于stack exchange,提问作者SiljeLB
相关产品推荐
相关产品推荐

