我使用以下简单的powershell将zip文件夹(包含其他文件夹和日志文件)解压缩到目标位置
$FolderPath = "C:\Temp\Whatever"
Expand-Archive -Path "$FolderPath\logs.zip" -DestinationPath "$FolderPath\logs"
不幸的是,这会返回一大堆错误,如下所示....
Remove-Item : Cannot find path 'C:\Temp\Whatever\logs\1_Selenium SEPA-Test\Attempt1\1_Start VM's\Release\1_Initialize Agent.log' because it does not exist.
At C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules\Microsoft.PowerShell.Archive\Microsoft.PowerShell.Archive.psm1:410 char:46
+ ... $expandedItems | % { Remove-Item $_ -Force -Recurse }
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\Temp\Whateve...alize Agent.log:String) [Remove-Item], ItemNotFoundException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.RemoveItemCommand
Remove-Item : Cannot find path 'C:\Temp\Whatever\logs\1_Selenium SEPA-Test\Attempt1\1_Start VM's\Release\1_Initialize Job.log' because it does not exist.
At C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules\Microsoft.PowerShell.Archive\Microsoft.PowerShell.Archive.psm1:410 char:46
+ ... $expandedItems | % { Remove-Item $_ -Force -Recurse }
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\Temp\Whateve...tialize Job.log:String) [Remove-Item], ItemNotFoundException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.RemoveItemCommand
以及其他类似的错误
我可以确认第一个错误C:\Temp\Whatever\logs\1_Selenium SEPA-Test\Attempt1\1_Start VM's\Release\1_Initialize Agent.log
中引用的文件确实存在于zip文件夹中的等效位置...
脚本结束后,我在指定的目录中看到一个不完整的文件夹。
这是怎么回事?
谢谢你,
8条答案
按热度按时间i86rm4rw1#
这是怎么回事?
Expand-Archive
在尝试展开一些文件时失败(在我的例子中,这是由于路径太长),并尝试删除它认为它提取的文件(请参见https://github.com/PowerShell/Microsoft.PowerShell.Archive/blob/master/Microsoft.PowerShell.Archive/Microsoft.PowerShell.Archive.psm1#L418),但Remove-Item
找不到任何文件,因为它们实际上没有被提取。切换到PowerShell 7为我修复了长路径问题。
igetnqfo2#
我以前在使用此模块时遇到过一些问题,我和一位同事拼凑了以下内容
也许这是有用的?
68bkxrlz3#
在命令中增加兵力对我很有效.
w8ntj3qf4#
我有同样的问题。这个问题发生在要导出的文件路径太长的情况下。
pxy2qtax5#
我得到了同样的错误,它为我工作时,我删除了双引号的ZIP文件路径。
例如:
展开存档路径$文件夹路径\logs.zip -目标路径“$文件夹路径\logs”
rsl1atfo6#
我没有长路径的问题-这是别的东西-不确定是什么。我运行的是Windows Server 2019,默认的PowerShell是V5. 1(你可以用X1 M0 N1 X检查)。
我安装了v7.1和v5.1。然后我可以用
powershell
命令运行powershell v5,用pwsh
命令运行v7.1。Expand-Archive
现在工作起来没有任何问题。noj0wjuj7#
这是我可以让Expand-Archive在2016 Server(PS 5.1)中工作的唯一方法,当我试图在本地运行完全相同的命令时,它完全失败了...
为什么会这样?因为在此映像中,命令解释程序默认为PowerShell的x86版本(64位PS:C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe仅在组策略成功后才应用-我必须禁用IPv6才能完成此操作,然后使用sap运行gpupdate /target:computer-等待以确保它工作)
uyto3xhc8#
我在另一种情况下也遇到了同样的错误。
我正在尝试从另一台计算机解压缩
a differently encoded Zip file
。解决方案1:保持相同的编码对我很有效。
设置:设置--〉语言和区域--〉
Region
--〉当前系统区域设置。注意:不要勾选
🔲Bata: Use Unicode UTF-8 for worldwide language support.
解决方案2:使用其他工具,如
Powershell7
或7z.exe
。