Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 检查Zip文件是否受密码保护_Powershell_Zip - Fatal编程技术网

Powershell 检查Zip文件是否受密码保护

Powershell 检查Zip文件是否受密码保护,powershell,zip,Powershell,Zip,我正在使用PowerShell提取多个ZIP文件。其中一些文件受密码保护。要求跳过受密码保护的文件。当此代码遇到受密码保护的文件时,将显示一个输入密码的框。在我解压缩ZIP文件之前,有没有办法检查它是否受密码保护?我也尝试过,但无法找到确定文件是否受密码保护的方法 $shell=新对象-com shell.application $zip=$shell.NameSpace(“C:\ZipFile.zip”) foreach($zip.items()中的项){ $shell.Namespace(“

我正在使用PowerShell提取多个ZIP文件。其中一些文件受密码保护。要求跳过受密码保护的文件。当此代码遇到受密码保护的文件时,将显示一个输入密码的框。在我解压缩ZIP文件之前,有没有办法检查它是否受密码保护?我也尝试过,但无法找到确定文件是否受密码保护的方法

$shell=新对象-com shell.application
$zip=$shell.NameSpace(“C:\ZipFile.zip”)
foreach($zip.items()中的项){
$shell.Namespace(“C:\ExtractedFiles”).copyhere($item)
}
更新:

我能够使用DotNetZip检测加密文件。如果没有DotNetZip我也能做到这一点会更好

[System.Reflection.Assembly]:LoadFrom(“C:\Ionic.Zip.dll”)
$zipfile=[Ionic.Zip.zipfile]::Read($file.FullName)
$encFlag=$false
foreach($zipfile中的文件){
if($file.UsesEncryption-eq$true){
$encFlag=$True
}
}
写入主机“Enctryption:$encFlag”

您可以将NOERRORUI标志指定为该方法的第二个参数:

$shell=新对象-com shell.application
$zip=$shell.NameSpace(“C:\ZipFile.zip”)
foreach($zip.items()中的项){
$shell.Namespace(“C:\ExtractedFiles”).copyhere($item,1024)
}
这将自动跳过受密码保护的zip文件的内容