测试zip文件提取命令是否已执行

时间:2015-09-16 13:05:42

标签: powershell if-statement unzip powershell-v4.0

我想测试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条件总是失败。

1 个答案:

答案 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
  }
}