我想测试zip文件的条件是否正确解压缩或者在PowerShell v4中解压缩命令时是否有任何错误。请更正我的代码。
Add-Type -AssemblyName System.IO.Compression.FileSystem
$file = 'C:\PSScripts\raw_scripts\zipfold\test.zip'
$path = 'C:\PSScripts\raw_scripts\zipfold\extract'
if ( (Test-path $file) -and (Test-path $path) -eq $True ) {
if ((unzip $file $path)) {
echo "done with unzip of file"
} else {
echo "can not unzip the file"
}
} else {
echo "$file or $path is not available"
}
function unzip {
param([string]$zipfile, [string]$outpath)
$return = [System.IO.Compression.ZipFile]::ExtractToDirectory($zipfile, $outpath)
return $return
}
此脚本提取zip文件但显示“无法解压缩文件”。作为输出。
不确定$return
变量的值是什么,我的If条件总是失败。
答案 0 :(得分:0)
documentation证实了@Matt怀疑的是什么。 ExtractToDirectory()
被定义为void
方法,因此它不会返回任何内容。因为$return
总是$null
,其评估结果为$false
。
话虽如此,如果出现问题,该方法应抛出异常,因此您可以使用try
/ catch
并在发生异常时返回$false
:
function unzip {
param([string]$zipfile, [string]$outpath)
try {
[IO.Compression.ZipFile]::ExtractToDirectory($zipfile, $outpath)
$true
} catch {
$false
}
}