解压缩时,powershell null值表达式错误

时间:2018-05-15 04:12:34

标签: powershell

我正在尝试从S3下载zip文件并使用以下脚本解压缩到特定文件夹:

$zipfile = "myapp.zip"
$dest_loc = "C:\test\"
aws s3 cp s3://apptxtmy/$zipfile $dest_loc
$shell = New-Object -Com Shell.Application
$zip = $shell.NameSpace("$dest_loc\$zipfile")
if (!(Test-Path "C:\test\appname\")) { 
    mkdir C:\test\appname
}
$shell.Namespace("C:\test\appname\").CopyHere($zip.items())

但我继续收到以下错误:

  

您无法在空值表达式上调用方法。   在C:\ Users \ Administrator \ Desktop \ deploy.ps1:9 char:1   + $ shell.Namespace(“C:\ test \ appname \”)。CopyHere($ zip.items())

任何帮助都将不胜感激。

由于

1 个答案:

答案 0 :(得分:0)

如果你想坚持原生的Powershell命令......

您可以使用Expand-Archive(如果您使用的是PS v4 +)来解压缩zip文件。

Read-S3ObjectAWS Tools for PowerShell的一部分)从S3获取文件。

Join-Path也可用于确保您的路径中没有双斜杠\\的问题。

$zipfile = "myapp.zip"
$dest_loc = "C:\test"
$appname = "appname"
$bucket = "apptxtmy"

$unzip_loc = Join-Path $dest_loc $appname
$zip_loc = Join-Path $dest_loc $zipfile

Read-S3Object -BucketName $bucket -Key $zipfile -file $zip_loc

if ((Test-Path $unzip_loc) -eq $false) { 
    New-Item $unzip_loc -ItemType Directory
}

Expand-Archive -Path $zip_loc -DestinationPath $unzip_loc